我正在尝试编写一个非常简单的程序,它要求您输入您的姓名,然后它会向您致意。代码如下:
#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;
}
Run Code Online (Sandbox Code Playgroud)
但是当我编译并运行程序时,会显示以下输出(输入名称John Doe):
#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;
}
Run Code Online (Sandbox Code Playgroud)
起初我打算使用gets()which 显然不打印换行符,但编译器(GCC)抱怨它:
`gets' 函数是危险的,不应使用。
如何从输入的字符串中删除换行符fgets()?
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;
}
Run Code Online (Sandbox Code Playgroud)
输出 :-
Write your name: world
Hello, world. Nice to meet you.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7498 次 |
| 最近记录: |