C语言 输出中只显示第一个字母.(char类型)



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

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

相关内容

  • 没有找到相关文章

最新更新