【发布时间】:2015-02-11 00:52:04
【问题描述】:
我使用fgets() 函数从键盘中取出一个字符串。但是,当我使用printf() 打印字符串时,光标会转到新行。
下面是代码。
#include<stdio.h>
int main()
{
char name[25];
printf("Enter your name: ");
fgets(name, 24, stdin);
printf("%s",name);
return 0;
}
下面是输出。
-bash-4.1$ ./a.out
Enter your name: NJACK1 HERO
NJACK1 HERO
-bash-4.1$
即使我没有在printf() 中添加\n,为什么光标会转到下一行?
但是,我注意到如果我使用scanf() 读取一个字符串,然后使用printf() 打印它(不使用\n),光标不会转到下一行。
fgets() 是否在字符串中附加了\n?如果是这样,它会先附加\0,然后附加\n,还是先附加\n,然后附加\0?
【问题讨论】:
-
使用
printf("%s", name)的要点(并避免使用printf(name)的常见菜鸟错误,这是一个主要的安全问题)。
标签: c string cursor scanf fgets