我正在尝试检查从文件中读取的某些变量是否不是整数,如果它们没有忽略它们并继续打印错误消息。所以我使用 isdigit() 来查看变量是否为整数,并且它在某种意义上继续“向后”工作。
int parseStudent(struct student *person, char *data){
char *ptr;
int temp;
int i = 0;
ptr = strtok(data, DELIM);
temp = atoi(ptr);
if(isdigit(temp)){printf("Invalid TERM integer!\n");}
//if(!isdigit(temp)){printf("Invalid TERM integer!\n");}
//person[i].term = temp;
ptr = strtok(NULL, DELIM);
person[i].id = atoi(ptr);
ptr = strtok(NULL, DELIM);
strcpy(person[i].lastname, ptr);
ptr = strtok(NULL, DELIM);
strcpy(person[i].firstname, ptr);
ptr = strtok(NULL, DELIM);
strcpy(person[i].subjectname, ptr);
ptr = strtok(NULL, DELIM);
person[i].catalog = atoi(ptr);
ptr = strtok(NULL, DELIM);
strcpy(person[i].section, ptr);
}
现在,正如您在我的第一次检查中看到的那样,我的意图是查看第一个 temp int(假设保存一个 int,它确实是“1301”)是否实际上是一个整数。当我使用未注释的行时,它不符合条件并且没有打印任何内容。当我使用注释行时,它会打印我的错误消息。这不是倒退吗!?我如何检查这些整数和字符串实际上是整数和字符串并在脸上报告错误?