我有一个C语言作业,要求用户输入数组值。我的想法是创建两个不同的数组,其中一个包含整数值,另一个包含字符值。到目前为止,这是我的代码:
#include <stdio.h>
int main()
{
char continued;
int i = 0;
char instrType[10];
int time[10];
printf("\nL-lock a resource");
printf("\nU-unlock a resource");
printf("\nC-compute");
printf("\nPlease Enter The Instruction Type");
printf(" and Time Input:");
scanf("%c", &instrType[0]);
scanf("%d", &time[0]);
printf("\nContinue? (Y/N) ");
scanf("%s", &continued);
i = i + 1;
while (continued == 'Y' || continued == 'y')
{
printf("\nL-lock a resource");
printf("\nU-unlock a resource");
printf("\nC-compute");
printf("\nPlease Enter The Instruction Type ");
printf("Time Input:");
scanf("%c", &instrType[i]);
scanf("%d", &time[i]);
printf("\nContinue? (Y/N) ");
scanf("%s", &continued);
i = i + 1;
}
return 0;
}
当我尝试输入新值时,循环刚刚停止,即使我输入了“ Y”,条件也没有检查该值,意思是“可以继续”,请帮忙:(
答案 0 :(得分:1)
您正在将一个字符串与一个字符进行比较,而不是使用scanf(“%s”,并继续)尝试使用“%c”
答案 1 :(得分:0)
主要问题是scanf("%c", &char)
,因为scanf()
在读取输入后会打印\n
在下一行传递,这导致下一个scanf()
而不是读取您的输入,请去读取\n
,从而导致输入的读取失败。
为避免此问题,请在%c
==> scanf(" %c", &char)
#include <stdio.h>
int main()
{
char continued;
int i = 0;
char instrType[10];
int time[10];
do
{
printf("L-lock a resource\n");
printf("U-unlock a resource\n");
printf("C-compute\n");
printf("Please Enter The Instruction Type and Time Input: ");
scanf(" %c%d", &instrType[i], &time[i]);
printf("Continue? (Y/N) ");
scanf(" %c", &continued);
i++;
} while (continued == 'Y' || continued == 'y');
return 0;
}
其他事项:
您可以使用i = i + 1
代替i++
使用while()
来节省一些代码比使用do{...}while()
更好。
您可以在一行中连接更多输入==> scanf(" %c%d", &instrType[i], &time[i])