这些是我得到的错误:

    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/

10-13 05:05