这些是我得到的错误:
search.c: In function ‘checkGrades’:
search.c:63: warning: passing argument 1 of ‘atoi’ makes pointer from
integer without a cast
/usr/include/stdlib.h:148: note: expected ‘const char *’ but argument is
of type ‘char’
search.c:63: error: expected ‘)’ before ‘;’ token
这是我的代码:
int checkGrades(STUDENT grades[], int maxrecs, FILE* fp)
{
char line[LINE_MAX];
int rc;
int count = 0;
int score;
char id;
while(fgets(line,LINE_MAX, fp) != NULL)
{
rc = sscanf(line,
"%25[^:]%*c%25[^:]%*c%6s%*c%3d%*c%3d%*c%3d%*c%3d%*c%3d%*c%2c",
grades[count].id,
&grades[count].score[1],
&grades[count].score[2],
&grades[count].score[3],
&grades[count].grade);
if((rc != 9) ||
rc == atoi (id);
grades[count].id < 100000 ||
grades[count].id > 999999 ||
grades[count].grade < 0 ||
grades[count].grade > 110)
{
printf("Invalid Record: %s", line);
}
else
{
count++;
if(count == TNARRAY_MAX)break;
}
printf("ID: ", grades-> id);
}
我不太确定rc是否应该用于atoi,我是C语言的初学者,我尝试了许多组合,但均未成功。我知道我需要在比较之前将字符串转换为int,但是我在这里很难做到。
任何帮助将不胜感激!
最佳答案
atoi函数需要一个指向const字符串的指针,如下所示:(const char * str)
您可以在此处查看其用法示例:https://www.tutorialspoint.com/c_standard_library/c_function_atoi.htm
另外,我不确定您是否打算复制整个代码(我假设LINE_MAX和TNARRAY_MAX是在某处定义的宏吗?),但就目前而言,您的花括号不匹配,这意味着您发布的这一部分代码还需要一个最后是'}'。
关于c - 试图使用atoi和它不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43149863/