输入文本并保存到文件

2024-01-28

以下函数创建一个新的文本文件并允许用户输入要保存到文件中的文本。我遇到麻烦的主要问题是 1)允许单词之间有空格 2)按 Enter 保存文本,而不是转到新行。

void new_file(void) 
{
    char c[10000];              
    char file[10000];
    int words;
    printf("Enter the name of the file\n");
   scanf("%123s",file);
    strcat(file,".txt"); 
    FILE * pf; 
   pf = fopen(file, "w" );

   if (!pf)
   fprintf( stderr, "I couldn't open the file.\n" );

   else
   {
        printf("Enter text to be saved\n");
        scanf("%s", c);     
        fprintf(pf, "%s", c); 
    }

    fclose(pf);  // close file  
    printf("\n\nReturning to main menu...\n\n"); 
}

Use fgets() http://man7.org/linux/man-pages/man3/gets.3.html代替scanf()获取用户输入的文本。

为此,请替换此行

scanf("%s", c); 

使用以下代码:

if (NULL != fgets(c, sizeof(c), stdin))
{
  fprintf(pf, "%s", c);
}
else
{
  if (0 != ferror(stdin))
  {
    fprintf(stderr, "An error occured while reading from stdin\n");
  }
  else
  {
    fprintf(stderr, "EOF was reached while trying to read from stdin\n");
  }
}

为了允许用户读取多行内容,请在上面的代码周围放置一个循环。为此,您需要定义一个条件来告诉程序停止循环:

The following example stops reading in lines when entering a single dot "." and pressing return:

do
{
  if (NULL != fgets(c, sizeof(c), stdin))
  {
    if (0 == strcmp(c, ".\n")) /* Might be necessary to use ".\r\n" if on windows. */
    {
      break;
    }

    fprintf(pf, "%s", c);
  }
  else
  {
    if (0 != ferror(stdin))
    {
      fprintf(stderr, "An error occured while reading from stdin\n");
    }
    else
    {
      fprintf(stderr, "EOF was reached while trying to read from stdin\n");
    }

    break;
  }
} while (1);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

输入文本并保存到文件 的相关文章

随机推荐

  • 由于共享库事件而停止 - Visual Studio Code

    我是 Visual Studio Code 的初学者 我尝试在其上调试我的 C 代码 我这里有一个示例代码 include iostream using namespace std int main cout lt lt hello wor
  • My.Settings 中自定义类的数组列表

    我有一个 Visual Basic Net 2 0 程序 我正在将设置从较旧的设置文件移至 app config 程序设置文件 我正在努力尽可能地做好这件事 所以 我添加了我的设置如图所示 https i stack imgur com e
  • 启动应用程序时使用 pg-promise 验证数据库连接

    我正在构建一个快速应用程序 它使用以下命令连接到 postgres 数据库pg 承诺 https github com vitaly t pg promise module 我想确保启动应用程序服务器时数据库连接成功 换句话说 如果与数据库
  • Android 在通知单击时打开特定选项卡片段

    我有一个使用操作栏选项卡的 Android 应用程序 还有一个通知系统 我想在单击通知时直接打开特定选项卡 如何做到这一点 因为通知挂起意图只能打开活动 而我的主要活动包含 3 个选项卡的 3 个片段 以下是选项卡主要活动的代码 publi
  • Ionic v2 按钮文本大写

    在我的 ionic v2 应用程序中有一个按钮 无论我输入哪个文本 它总是大写 我不想添加 css utilities 因为我混合了小写和大写单词 这是我的代码
  • SQLiteConstraintException 不要进入 catch 内部

    当我运行该代码时 db insert 内部出现异常 08 29 15 40 17 519 E SQLiteDatabase 3599 android database sqlite SQLiteConstraintException col
  • Mono .EXE 程序集集资源管理器图标

    在Linux上使用gmcs编译时 如何设置最终EXE将使用的资源管理器图标 我有一个 ico 文件要附加到输出 exe 答案必须是可自动化构建并在 Linux 上执行 无需 wine 构建机器架构不是 x86 可以使用针对 Windows
  • 将 XML 值反序列化为枚举时处理额外空格

    我一直想知道是否可以做到这一点 当 XML 响应有不正确的值需要映射到枚举时 这将是一个很大的帮助 我具体处理的情况是当期望值有尾随空格而枚举期望它没有尾随空格时 XML
  • Android 编程中 b/w app:theme 和 android:theme 有什么区别

    我看到有人写这个 app theme style xyz 另一方面 有些人写 android theme style xyz 这2个代码有什么区别 app and android实际上是命名空间 你可以用同样的方式来思考它们packages
  • IdHTTP 如何发送原始正文

    我如何使用IdHTTP发送消息为PostMan下面的dos 我的第一次尝试如下 function TIdFoo SendIM const AID AMessage string Boolean const URL https URL com
  • SOM(自组织映射)和 K 均值有什么区别?

    stackoverflow中只有一个与此相关的问题 更多的是关于哪个更好 我只是不太明白其中的区别 我的意思是它们都使用向量 这些向量被随机分配给集群 它们都使用不同集群的质心来确定获胜的输出节点 我的意思是 差异到底在哪里 在 K 均值中
  • 如何正确验证验证码?

    我有使用验证码验证的登录表单 我在 php 文件中编写验证时遇到问题 如果验证码输入不正确 则会出现错误 目前我已经验证 如果没有输入验证码 它会显示错误 但是当我输入一些错误的验证码时 登录将继续并将用户登录到站点 这是我的代码 感谢任何
  • Maven 依赖范围未按预期工作

    Maven 2 2 1 声称支持版本范围 参见例如http www sonatype com books mvnref book reference pom relationships sect project dependency htm
  • Google Contacts API - 无法刷新访问令牌

    我们将 Google Contacts API 与 OAuth2 结合使用 credential new GoogleCredential Builder setTransport new NetHttpTransport setJsonF
  • 如何将本地托管的MySQL数据库与docker容器连接

    Through docker compose yml我能够运行该应用程序 现在我们想要将应用程序转移到生产环境 但我们不想使用容器数据库 那么有什么方法可以让我可以使用以下命令将本地 MySQL 数据库与应用程序连接起来docker com
  • Laravel maatwebsite/excel Composer 在 mac 中安装错误

    尝试通过 Mac 版 Composer 在 XAMPP 7 1 32 rev 1 中安装 maatwebsite excel 如何在 XAMPP for mac 中启用这些扩展或者是否存在任何其他问题 请帮我 composer instal
  • 写重的elasticsearch

    我正在使用 kafka storm 和 Elasticsearch 编写一个实时分析工具 并且想要一个针对大约 50K 秒插入进行写入优化的 Elasticsearch 出于 POC 的目的 我尝试将批量文档插入到 Elasticsearc
  • magento管理部分添加类别时出现致命错误

    我在 Magento 管理部分遇到一个错误 当我尝试创建一个类别时 它显示以下致命错误 致命错误 在第 331 行对 C wamp www magento lib Varien Data Tree Dbp php 中的非对象调用成员函数 g
  • 我如何使用 jQuery 来解析 XML,就像我在这里一样

    这个 或其某些变体 是由我的 PHP 脚本输出的 请注意 某些标签在不同的上下文中使用相同的名称
  • 输入文本并保存到文件

    以下函数创建一个新的文本文件并允许用户输入要保存到文件中的文本 我遇到麻烦的主要问题是 1 允许单词之间有空格 2 按 Enter 保存文本 而不是转到新行 void new file void char c 10000 char file