C语言:数组未返回正确的值

时间:2018-11-22 02:34:38

标签: c arrays

我有一个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;
}

期望值应为:L1 L2 C3 U1 我的屏幕截图enter image description here

当我尝试输入新值时,循环刚刚停止,即使我输入了“ Y”,条件也没有检查该值,意思是“可以继续”,请帮忙:(

2 个答案:

答案 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])