输出中只显示第一个字母。[char type]

时间:2015-06-07 15:19:53

标签: c string printf scanf

当我输入时,只显示第一个字母。 我想打印刚刚输入的完整名称。

#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;
}

6 个答案:

答案 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;
}