Ошибка в c при итерации: использование необъявленного идентификатора i - PullRequest
0 голосов
/ 17 января 2020

Я создаю программу, которая будет запрашивать аргумент командной строки у пользователя, и пользователю нужно будет вводить только целые числа как argv [1]. Он должен отклонить любой ввод, кроме целых чисел. Мой код, как показано ниже:

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

int main(int argc, string argv[] )
string s = argv[1];
    for (int i = 0; n = strlen(s); i< n; i++)
    {
        if(!( isdigit(s[i])) )
        {
            printf("All numbers: correct input");
            return 1;
        }
    }

    //Else print a prompt asking for a plaintext to cipher
    else
    {
        string p = get_string("Your text here: ");
        return 0;
    }
    }

Запуск вышеуказанного кода выдает ошибку: ошибка: использование необъявленного идентификатора 'i' для (int i = 0; n = strlen ( s); i

Где я могу ошибиться и как это исправить? Спасибо.

Извините, если мои вопросы кажутся глупыми, я все еще новичок ie, учусь здесь и абсолютно ничего не знаю о C раньше. Спасибо за помощь, хотя.

1 Ответ

0 голосов
/ 17 января 2020

Если у вас есть компилятор C89, вам нужно будет поместить замедления в верхнюю часть блока контекста, поэтому переменная i должна быть объявлена ​​перед для l oop.

Попробуйте это, если ваш используя C89:

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

int main(int argc, string argv[] ){
 string s = argv[1];
 int i = 0;
 int n = strlen(s);
 for (; i< n; i++)
    {
        if(!( isdigit(s[i])) )
        {
            printf("All numbers: correct input");
            return 1;
        }
    }

    //Else print a prompt asking for a plaintext to cipher
    else
    {
        string p = get_string("Your text here: ");
        return 0;
    }
  } //end of for loop?  TODO: fix your braces spacing the sample was broken
}//end of for main?  TODO: fix your braces spacing the sample was broken
...