当我输入时,只显示第一个字母。 我想打印刚刚输入的完整名称。
#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;
}
答案 0 :(得分:2)
我同意其他人 - 但添加一些错误检查并确保没有缓冲区溢出,即
cut: the delimiter must be a single character
修改强>
由于您已编辑该问题,因此它与之前的含义不同,我将在此处留下我之前的解决方案。
但你想要的是使用#include <stdio.h>
int main() {
char name[101];
printf("Name of the student:");
if (scanf("%100s", &name) == 1) {
printf("Name you just entered: %s\n", name);
return 0;
} else {
printf("Unable to read name of student\n";
return -1;
}
}
- 这允许名称中的空格
即
fgets
答案 1 :(得分:1)
name
是一个char,scanf只会在您使用%c
时捕获一个字符。您可以使用char数组来存储名称:
char name[40];
/* edit the size for your need */
同时编辑您的scanf和printf以使用%s
答案 2 :(得分:1)
将char name;
替换为char name[100];
。这会将名称定义为字符数组,因为您将其作为单个字符处理。
对于scanf,将其替换为scanf("%s",&name[0]);
,将printf替换为printf("Name your Just entered is : %s",name);
。 %s表示字符串,因此它将扫描整个字符串,而不仅仅是单个字符。在scanf&amp; name [0]指向数组的开头。
答案 3 :(得分:1)
您需要scanf
进入数组,而不是单个字符:
#include <stdio.h>
int main() {
char name[100];
printf("Name of the student:");
scanf("%s", &name);
printf("Name you just entered: %s\n", name);
}
答案 4 :(得分:1)
您正在尝试在角色中存储一组字符(字符串)。因此,只有第一个字符被占用。要纠正这个名称初始化为:
dx = len(lista)
将输入视为:
dx = len(lista) - 1
并打印为:
{{1}}
答案 5 :(得分:0)
您正在使用char
阅读(和打印)单个%c
。如果你想处理stirngs,你应该使用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;
}