C 错误:预期为'='''''';asm&x27;或'__属性';在'之前;{';代币

C 错误:预期为'='''''';asm&x27;或'__属性';在'之前;{';代币,c,compiler-errors,C,Compiler Errors,这是主要问题 int main(int argc, char *argv[]) { char statement[MAX_LINE]; int statement_len; char type[MAX_LINE]; char var[MAX_LINE]; /* Print the output header comment */ printf(OUTPUT_HEADER, argv[0]); /* Loop through statem

这是主要问题

int
main(int argc, char *argv[]) {
    char statement[MAX_LINE];
    int statement_len;
    char type[MAX_LINE];
    char var[MAX_LINE];

    /* Print the output header comment */
    printf(OUTPUT_HEADER, argv[0]);

    /* Loop through statements read on stdin */
    while ((statement_len = next_statement(statement,MAX_LINE)) > 0) {
        printf("%s;\n",statement);
        sscanf(statement,"%s %s",type,var);
        var_lib_check(type,var);
        var_replace(statement,statement_len);
    }
    return 0;
}
这是发生错误的函数

void
var_replace(char statement, int statement_len){
int i;
int x;

for (i = 0; i < statement_len; i++){
    for (x = 0; x < num_of_var; x++){
        if (strcmp(var_library[x],statement[i]) == 0){
            printf("hello");
        }
    }
}
return;
}
void
变量替换(char语句、int语句){
int i;
int x;
对于(i=0;i
错误:

在“{”标记之前应为“=”、“、”、“;”、“asm”或“属性

如何修复此问题?

您的函数是

void var_replace(char statement, int statement_len){
所以,它需要一个字符作为第一个参数,但传递的是一个字符串

char statement[MAX_LINE];
var_replace(statement,statement_len);
               ^
              statement is a character array
这是一个问题。然后在函数中,使用

if (strcmp(var_library[x],statement[i]) == 0){
                                    ^
                                  but statement is a character, not a string

如果要检查每个字符,请不要使用
strcmp()

编译器指向哪一行?我们不是GCCs或clangs,您知道错误可能在该函数之前,您可能没有匹配的大括号。语句是char变量,而您在
strcmp()中将其视为char数组
line。您现在应该担心其他事情,比如传递
char
并在其上使用索引。c中没有字符串类型,并且
char!=string
。我修复了它,因为我忘记了#include,并更改了数组指针。这是如何回答问题的?