了解isdigit()在C中的工作原理
我试图检查从文件中读取的某些变量是否为整数,如果不是,则忽略它们并继续打印错误消息。因此,我使用isdigit()来查看变量是否为int,并在某种意义上保持“向后”工作了解isdigit()在C中的工作原理,c,string,int,C,String,Int,我试图检查从文件中读取的某些变量是否为整数,如果不是,则忽略它们并继续打印错误消息。因此,我使用isdigit()来查看变量是否为int,并在某种意义上保持“向后”工作 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("Inv
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”)实际上是一个整数。当我使用未注释的行时,它不符合条件,并且不打印任何内容。当我使用注释行时,它会打印我的错误消息。这不是倒退吗!?如何检查这些整数和字符串实际上是整数和字符串,并报告面上的错误?
isdigit
属于字符分类功能。因此,此函数将atoi
返回的值解释为字符(使用您的字符集,如ASCII)。这不是你所期望的。如果要处理错误,可以阅读。isdigit
属于字符分类功能。因此,此函数将atoi
返回的值解释为字符(使用您的字符集,如ASCII)。这不是你所期望的。如果你想处理错误,你可以阅读。这不是倒退。如果是一个数字,isDigit返回true,您说您使用了“1301”。因此,您的未注释行返回true。然而,后者需要更多的时间!正确或错误。这不是倒退。如果是一个数字,isDigit返回true,您说您使用了“1301”。因此,您的未注释行返回true。然而,后者需要更多的时间!true或false。isdigit-检查文档-它应该用于字符变量,而不是整数值变量
请查看:
char digit = '1';
char notDigit = 'a';
char notEvenCloseADigit = 1;
int digitIsDigit = isdigit(digit);
int notDigitIsDigit = isdigit(notDigit);
int notEvenCloseADigitIsDigit= isdigit(notEvenCloseADigit);
isdigit-查看文档-它应该用于字符变量,而不是整数值变量 请查看:
char digit = '1';
char notDigit = 'a';
char notEvenCloseADigit = 1;
int digitIsDigit = isdigit(digit);
int notDigitIsDigit = isdigit(notDigit);
int notEvenCloseADigitIsDigit= isdigit(notEvenCloseADigit);
也许你更应该谈论“字符”和“整数”,而不是
char
和int
,因为'1'
有int
类型。@Kirilenko完成了,你是对的;这就是我的意思,我希望这就是我被理解的方式。也许你更应该谈论“字符”和“整数”,而不是char
和int
,因为'1'
有int
类型。@Kirilenko完成了,你是对的;这就是我的意思,我希望这就是我的理解。一般来说,“数字”不是“数字”。一个数字由一个或多个数字组成。一般来说,“数字”不是“数字”。一个数字由一个或多个数字组成。这是完全错误的atoi(3)
获取字符串并将其解释为十进制数(如果可能)。无论atoi
返回什么,它都不是应用isdigit(3)
的char
。这是完全错误的atoi(3)
获取字符串并将其解释为十进制数(如果可能)。无论atoi
返回什么,它都不是isdigit(3)
适用的char
。