关于fputs()的混淆 #包括 int main() { char-str[100]; printf(“输入字符串:”); fgets(str,sizeof(str),stdin); fputs(“利物浦”,stdout); fputs(“曼彻斯特”,标准杜特); 返回0; }
输出 输入字符串:打孔关于fputs()的混淆 #包括 int main() { char-str[100]; printf(“输入字符串:”); fgets(str,sizeof(str),stdin); fputs(“利物浦”,stdout); fputs(“曼彻斯特”,标准杜特); 返回0; },c,fputs,C,Fputs,输出 输入字符串:打孔 利物浦和曼彻斯特 但是,当我从用户那里获取输入时,它并没有给出预期的输出 #include<stdio.h> int main() { char str[100]; printf("Enter a string: "); fgets(str, sizeof(str), stdin); fputs("Liverpool", stdout); fputs("Manchester", stdout); return 0; } #
利物浦和曼彻斯特
但是,当我从用户那里获取输入时,它并没有给出预期的输出
#include<stdio.h>
int main()
{
char str[100];
printf("Enter a string: ");
fgets(str, sizeof(str), stdin);
fputs("Liverpool", stdout);
fputs("Manchester", stdout);
return 0;
}
#包括
int main()
{
char-str[100];
printf(“输入字符串:”);
fgets(str,sizeof(str),stdin);
fput(str、stdout);
fput(str、stdout);
返回0;
}
输出
输入字符串:打孔打孔
冲床 这两个代码之间唯一的变化是,我在前一个代码中指定了字符串,在后一个代码中,我从用户那里获取输入。有谁能告诉我这背后的原因吗 该函数读取直到并包括换行符
因此,您传递给
fputs
的缓冲区将包括fgets
调用中的换行符,这当然将在输出中添加新行。查看函数fgets
和fputs
上的这两个链接
这将有助于你阅读这些自己肯定。但是,使用fputs
时,它似乎不会自动在字符串末尾追加换行符\n
在第一个示例中,通过指定硬编码的特定字符串,不会添加换行符。使用fgets时,它将自动在末尾附加一个
\n
。因此,当您输出str
而不是“利物浦”
或“曼彻斯特”
时,它存储的是“punch\n”
而不仅仅是“punch”
,“它没有给出预期的输出”。您希望输出是什么?输出中的差异显然意味着第二个示例中的字符串包含换行符。这是必须的。果然,如果您查看fgets
的手册页,就会发现其中包含换行符。尝试更仔细地阅读功能手册页。它准确地描述了fgets
的工作原理。
#include<stdio.h>
int main()
{
char str[100];
printf("Enter a string: ");
fgets(str, sizeof(str), stdin);
fputs(str, stdout);
fputs(str, stdout);
return 0;
}