我正在尝试编写一个非常简单的程序,要求您键入姓名,然后向您打招呼。代码如下:
#include <stdio.h>
int main() {
char name[30];
printf("Write your name: ");
fgets(name, 30, stdin);
printf("Hello, %s. Nice to meet you.\n", name);
return 0;
}
但是当我编译并运行程序时,将显示以下输出(键入名称John Doe
):
Hello, John Doe
. Nice to meet you.
起初,我要使用gets()
,它显然不会打印换行符,但编译器(GCC)对此有所抱怨:
“获取”功能很危险,不应使用。
如何从用fgets()
输入的字符串中删除换行符?
答案 0 :(得分:1)
在name[strlen(name)-1]='\0';
之后添加此代码行fgets()
。之所以newline
是因为fgets()
中的终端符号不是\n
,而是\0
。因此我们需要用它来使它\0
。
修改后的代码:-
#include <stdio.h>
#include <string.h>
int main() {
char name[30];
printf("Write your name: ");
fgets(name, 30, stdin);
name[strlen(name)-1]='\0'; // making '\n' '\0'
printf("Hello, %s. Nice to meet you.\n", name);
return 0;
}
输出:-
Write your name: world
Hello, world. Nice to meet you.