C 处理字符时出现分段错误
值得注意的是,我对C语言还很陌生,而且对C语言还是个初学者。这个问题困扰了我一段时间,我想这里可能有人能帮上忙 代码如下:C 处理字符时出现分段错误,c,C,值得注意的是,我对C语言还很陌生,而且对C语言还是个初学者。这个问题困扰了我一段时间,我想这里可能有人能帮上忙 代码如下: #include <stdio.h> #include <stdlib.h> int main() { int age; printf("Enter your age: "); scanf("%d", &age); printf("You are %d ye
#include <stdio.h>
#include <stdlib.h>
int main()
{
int age;
printf("Enter your age: ");
scanf("%d", &age);
printf("You are %d years old \n", age);
double gpa;
printf("Enter your GPA: ");
scanf("%lf", &gpa);
printf("You're GPA is %lf \n", gpa);
char name[20];
printf("Please enter your name: ");
scanf("%s", &name);
printf("Your name is %s \n", name);
char grade;
printf("Enter your grade: ");
scanf("%s", &grade);
printf("Your grade it %s \n ", grade);
return 0;
}
希望这里有人能帮忙。祝你一切顺利 获取等级输入的输入将是
scanf(“%c”、&grade)代码>
出现此问题是因为等级是一个char变量,而不是char
数组
char
->%c
char
array(也称为C中的字符串)->%s
出现segmentation错误的原因是,您将输入的B
扫描为字符串而不是字符(它相当于{'B','\0'}
,因此它不仅仅是B
)您正试图将此字符串分配到字符中
如果您想获得一个字符作为输入(似乎您希望这样),您必须执行以下操作:
scanf ("%c",&grade);
%c
格式说明符用于扫描char
s,而&grade
基本上是级别的地址
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
但是,如果要获取字符串作为输入(即C中的字符数组),则必须如下定义等级:
char grade [n];
(n
是表示数组大小的数字)
并且scanf
行必须是:
scanf ("%s",grade);
%s
格式说明符用于获取字符串
s(即C中的字符数组)。我们使用grade
而没有(&
)运算符地址的原因与指针有关。因为grade
已经是一个指针;我们需要它的值(即数组第一个字符的地址),而不是地址。检查链接以获得更好的理解。在确保您理解了指针的逻辑之后,还要检查post
注:这是一个自学问题。尽量避免被否决。提示:grade
是char
而不是char[]
scanf(“%s”和&grade)代码>-->scanf(“%c”和等级)代码>实际scanf(“%c”、&grade)
来处理名称
留下的'\n'
。这就是您使用-Wall-Wextra
编译的原因谢谢,我以前忘记了%s留下的\n,我的意思是scanf(“%c”,&grade)代码>。将对其进行编辑和修复。现在,这将使grade的输入不会被跳过!为了使它成为一个真正有用的答案,您可以解释%s“
发生了什么,并将'\n'
留在stdin
中,不读%c”
而'\n'
将作为等级的输入,现在我似乎表现出一个问题,它在我回答之前就退出了程序。这样输入你的成绩:你的成绩是
scanf ("%s",grade);