【问题标题】:Appending user input array to file [c]将用户输入数组附加到文件 [c]
【发布时间】:2018-06-16 04:37:18
【问题描述】:

我正在尝试向文本文件中添加一个句子,但我似乎只添加了句子的一个单词而不是整个句子。我知道使用 fputs("this is a sentence", pFileText);它可以很好地添加文本,但不能通过添加字符串变量。我做错了什么?

char sentence[1000];

FILE * pFileText;

pFileText = fopen("text.txt", "a");

printf("Enter text: ");
scanf("%s", &sentence[1000]);

fputs("\n", pFileText);
fputs(sentence, pFileText);
fclose(pFileText);

【问题讨论】:

  • &sentence[1000] 是指向数组末尾的一个元素的指针。
  • 另外,scanf("%s", ...) 只会读取一个单词。您可以使用 fgets() 读取整行(直到并包括终止换行符)。

标签: c file append


【解决方案1】:
scanf("%s", &sentence[1000]);

将会

scanf("%s", sentence);

启用编译器警告并运行相同的代码。它会告诉你哪里出错了。

gcc -Wall -Werror progname.c

第二个例子是传递一个char*,但第一个例子是试图传递一个char(*)[1000]scanf%s 格式说明符需要 char* 而不是 char(*)[1000]

fegts 是我想说的正确选择,而且使用起来更干净。

fgets(sentence,1000,stdin);

检查fgets 的返回值将完成您想要在此处实现的工作。 (你想读一行,fgets 会这样做)。

【讨论】:

    猜你喜欢
    • 2014-05-16
    • 2020-12-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    相关资源
    最近更新 更多