Arrays 创建一个数组,该数组在c中逐字符存储字符
我正在尝试创建一个数组,该数组允许我根据用户以前输入的数字输入字符,如果我输入10,我只希望用户输入10个字符,A或F。问题是,当输入数字时,它会将我发送到while循环,不允许我退出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
#包括
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'))