sách gpt4 ai đã đi

Sự khác biệt giữa scanf("%79[^\n]",line); so với scanf("%79[^\n]\n",line) so với scanf("%79[^\n]s",line)

In lại Tác giả: Space Dog 更新时间:2023-10-29 16:01:41 31 4
mua khóa gpt4 Nike

我正在用 c 编写一个程序来读取文件的内容。代码如下:

   #include 
void main()
{
char line[90];
while(scanf("%79[^\n]\n",line)==1)
printf("%s",line);
}

以上代码读取一个文件内容并显示在屏幕上。

Nhưng

while(scanf("%79[^\n]",line)==1) and while(scanf("%79[^\n]s",line)==1) or while(scanf("%79[^\n]s\n",line)==1) 

不起作用。(它们只显示第一行)

Có ai có thể giải thích được điều này không?

1 Câu trả lời

格式 "%79[^\n]" 表示最多 79 个字符,不是 '\N'.

当你使用时,

scanf("%79[^\n]s",line)

返回值不应为 1,因为格式说明符中的 S 在读取完所有非 的字符后需要文字 S\n'。换句话说,scanf 报告失败。

当你使用时,

scanf("%79[^\n]\n",line)

它成功了,因为它在末尾找到了文字 '\N'.

两者的区别

scanf("%79[^\n]",line)

scanf("%79[^\n]\n",line)

Đúng'\N'在第一种情况下留在输入流中,而在第二种情况下被消耗。在第二种情况下,不仅 '\N' 被消耗,而且任何以 '\N' 开始的空格序列也被消耗(感谢@MattMcNabb补充说明)。

如果您希望 scanf 仅使用 '\N',请使用:

scanf("%79[^\n]%*c",line)

关于c - scanf ("%79[^\n]",line); 之间的区别vs scanf ("%79[^\n]\n",线) vs scanf ("%79[^\n]s",线),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24418394/

31 4 0
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com