我在代码中犯了什么错误。它没有给出任何输出吗?

时间:2018-10-22 03:45:28

标签: c

我在代码中犯了什么错误?它没有给出任何输出。这个问题在image中给出。我正在使用ASCII变量集来打印字母和数字集。

#include <ctype.h>
#include <stdio.h>
#include <string.h>

int main()
{
    int i, j, temp, t, s, e;
    char test[20], start = 'a', end = 'z';
    scanf("%s", test);
    for (i = 0; i < strlen(test) && (test[i] == '-'); i++);
    for (; i < strlen(test););
    {
        if (isalpha(test[i]) != 0)
        {
            start = test[i];
            for (; (i < strlen(test)) && (isdigit(test[i]) == 0); i++);
        }

        end = test[i - 1];
        temp = end - start + 1;

        if (isdigit(test[i]) != 0)
        {
            s = test[i];
            for (; (i < strlen(test)) && (isalpha(test[i]) == 0); i++);
        }

        e = test[i - 1];
        t = e - s + 1;

        for (j = 0; j < temp; ++j, start++)
        {
            printf("%c", start);
        }
        printf("\n");

        for (j = 0; j < t; ++j, s++)
        {
            printf("%c", s);
        }
        printf("\n");
    }

    return 0;
}

1 个答案:

答案 0 :(得分:1)

您已将;放在for循环的末尾,这就是loop的主体未按预期执行的原因。 Effect of semicolon after 'for' loop

for (i = 0; i < strlen(test) && (test[i] == '-'); i++);
for (; i < strlen(test););
for (; (i < strlen(test)) && (isdigit(test[i]) == 0); i++);
for (; (i < strlen(test)) && (isalpha(test[i]) == 0); i++);

从每个;循环的结尾删除for

您还应该删除内部for循环,如外部for循环中已提到的那样。 请正确检查每个for循环的正文