【发布时间】:2019-11-25 15:37:37
【问题描述】:
所以,我有了这段代码,然后继续将“名称”保存到二进制文件中。
scanf("%d", &option);
while(getchar() != '\n');
fgets(name,MAX_SIZE,stdin);
我认为 fgets 会保留那个 '\n',因为第一个单词保存在二进制文件的第 2 行,然后每个单词都保存在新行上。但是,当我在退出循环之前继续将其他内容保存到另一个二进制文件时,字符串会连续保存。
我如何摆脱那个'\n'?非常感谢。
【问题讨论】:
-
“二进制文件的第 2 行”不清楚。二进制文件通常不会被认为有 lines。你的意思是 text 文件吗?它的示例内容是什么?
-
fgets(name,MAX_SIZE,stdin);从stdin读取一个全新的行 - 包括换行符。它不保留之前从stdin读取的任何内容。 -
没有足够的信息来完全回答您的问题,但请注意
fgets()确实会将尾随换行符复制到字符串中。因此,如果while(getchar() != '\n');不存在,则在scanf之后立即调用fgets()将返回一个仅包含换行符的字符串,如果您要写入文件,则有效地将“空行”插入文件.