Как мне это исправить. Моя программа не должна принимать какой-либо алфавит.
Int должен принимать только действительные числа и отклонять строку, если она содержит алфавит
int main(int argc, char *argv[])
{
char str[1000];
int i, ch, key;
{
if (argc != 2)
{
printf("key\n");
return 1; // exit prog
}
// read argv value into key after argc valid
//to prevent sementation error
key = atoi(argv[1]);
// do multi wrap arounds use leftover digit
key = (key % 26);
//check for positive number
if (key < 1)
{
printf("key\n");
return 1; // exit prog
}
// ask for text if pos number
else if (key >= 0)
{
printf("text:");
// check string and read in
fgets(str, sizeof str, stdin);
i = strlen(str);
}
Если я набираю
- ./name (без ввода, алфавит, две строки возвращают 1, как должно.)
- . / name (число должно работать и возвращать 0)
- . / name a1 или b5 возвращают 1, но 1a или 5b возвращают 0 и не должны.
В отладчике я вижу, что он только считывает значение числа в argv как 1 или 5, а не как 1a или 5b