当我给出输入时,只显示第一个字母。我想打印刚刚输入的完整名称
#include <stdio.h>
int main()
{
char name;
char grades;
int i;
printf("Name of the Student:");
scanf("%c",&name);
printf("Name your Just entered is : %c",name);
return 0;
}
我同意其他人的看法-但要添加一些错误检查并确保没有缓冲区溢出,即
#include <stdio.h>
int main() {
char name[101];
printf("Name of the student:");
if (scanf("%100s", &name) == 1) {
printf("Name you just entered: %sn", name);
return 0;
} else {
printf("Unable to read name of studentn";
return -1;
}
}
编辑
由于你已经编辑了这个问题,所以它的意思与以前不同,我将把我以前的解决方案留在这里。
但是你想要的是使用fgets
-这允许在名称
。
#include <stdio.h>
int main()
{
char name[100];
printf("Name of student:");
fflush(stdout);
fgets(name, 100, stdin);
printf("Students name is %sn", name);
return 0;
}
将char name;
替换为char name[100];
。这将把name定义为字符数组,因为您将其作为单个字符处理。对于扫描,将其替换为scanf("%s",&name[0]);
,并用printf("Name your Just entered is : %s",name);
打印。%s表示字符串,因此它将扫描整个字符串,而不仅仅是单个字符。在scanf &name[0]指向数组的开始
您需要将scanf
转换成一个数组,而不是单个字符:
#include <stdio.h>
int main() {
char name[100];
printf("Name of the student:");
scanf("%s", &name);
printf("Name you just entered: %sn", name);
}
您正在尝试在字符中存储字符数组(字符串)。所以只取第一个字符。要纠正这个错误,将名称初始化为:
char name[40];
将输入作为:
scanf("%s",name);
并打印为:
printf("name is %s",name);
name
是一个字符,当您使用%c
时,scanf将只捕获一个字符。您可以使用字符数组来存储名称:
char name[40];
/* edit the size for your need */
也编辑你的scanf和printf使用%s
您正在使用%c
读取(并打印)单个char
。如果你想处理字符串,你应该使用char[]
和%s
:
#include <stdio.h>
int main()
{
char name[100]; /* Assume a name is no longer than 100 chars */
char grades;
int i;
printf("Name of the Student: ");
scanf("%s",&name);
printf("Name your Just entered is : %s",name);
return 0;
}