>我只是想用空格和星星包围一个名字。
例如。
* John *
但我得到的输出是:
* John
*
为什么会这样?
谢谢
#include<stdio.h>
char name[30];
int main(int argc, char **argv)
{
printf ("Please enter your name: ");
fgets ( name , 30 , stdin );
printf ("* %s *", name);
return 0;
}
函数fgets
可以将换行符'n'
附加到输入的字符串。
您应该将其删除。您可以通过以下方式进行操作
#include <stdio.h>
#include <string.h>
//…
fgets ( name , 30 , stdin )
name[ strcspn( name, "n" ) ] = ' ';
fgets(( 也会获取你用 Enter 输入的换行符。您只需要删除它。只是做name[strlen(name) - 1] = ' '
.
当用户按 Enter 键时,您对fgets
的调用也会以换行符读取。您可以尝试使用scanf
:
scanf("%s", name);