Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 创建一个数组,该数组在c中逐字符存储字符_Arrays_C_Char_Scanf - Fatal编程技术网

Arrays 创建一个数组,该数组在c中逐字符存储字符

Arrays 创建一个数组,该数组在c中逐字符存储字符,arrays,c,char,scanf,Arrays,C,Char,Scanf,我正在尝试创建一个数组,该数组允许我根据用户以前输入的数字输入字符,如果我输入10,我只希望用户输入10个字符,A或F。问题是,当输入数字时,它会将我发送到while循环,不允许我退出 #包括 int main(){ int i,学生; 炭级[100]; printf(“欢迎,输入分配学校年级的学生人数:\n”); scanf(“%d”和学生); printf(“输入A(批准)或F(失败)\n”); 对于(i=0;i

我正在尝试创建一个数组,该数组允许我根据用户以前输入的数字输入字符,如果我输入10,我只希望用户输入10个字符,A或F。问题是,当输入数字时,它会将我发送到while循环,不允许我退出

#包括
int main(){
int i,学生;
炭级[100];
printf(“欢迎,输入分配学校年级的学生人数:\n”);
scanf(“%d”和学生);
printf(“输入A(批准)或F(失败)\n”);
对于(i=0;i
输入数字10后,程序跳过第二次扫描并将我发送到while循环

通过将
scanf(“%c”、&grade[i])
更改为
scanf(“%c”、&grade[i])
,问题是现在即使输入A或F,while循环也会保持


逻辑错误。循环条件始终为真

如果该值是
A
,则它不是
F
。反之亦然

看起来您想要:

while (grade[i] != 'A' && grade[i] != 'F')
这将在输入非
A
F
的任何值时循环。这在逻辑上相当于:

while (!(grade[i] == 'A' || grade[i] == 'F'))

有关更多信息,请阅读。

能否显示您获得的确切输入和输出?可能重复:输入数字并按enter键。scanf获取所有数字字符并将它们放入学生中。“回车”键仍在输入中,尚未删除。然后你读一个字符,得到的“回车”键不是a到F。你需要
scanf(“%c”,&grade[i])(scanf格式字符串中的空格将使其读取所有空格,然后读取一个字符)这是否回答了您的问题<代码>等级[i]!='A'| |等级[i]!='F'
这将始终是正确的,因为没有一个等级可以同时等于
A
F
while (!(grade[i] == 'A' || grade[i] == 'F'))