Я обновляю свои навыки C и испытываю небольшие трудности с простой программой, над которой я работаю.Вот оно:
#include <stdio.h>
#include <ctype.h> // for isdigit()
#include <stdlib.h> // for atoi()
int main (int argc, const char * argv[])
{
// first read in # of file events to follow, if not an int,
// complain & abort
char *input;
input = malloc(2); // input[0] holds the character
// input[1] holds the terminator
int numLines = 0;
scanf("%c", &input);
if (isdigit((int)input)) {
numLines = atoi(input);
} else {
printf("First line of input must be int type! Aborting...\n");
return 1;
}
//...
}
Проблема в том, что даже когда я ввожу число (т. Е. 2), оно все равно выводит сообщение о прерывании и завершается:
2
First line of input must be int type! Aborting...
У менятрудно понять, почему он ведет себя так, как он есть, и что я должен сделать, чтобы решить проблему.Разве спецификатор '% c' не должен указывать компилятору принимать входные данные как символ ANSI, а затем isdigit () должен правильно интерпретировать это как целое число?
Заранее спасибо!