为什么这个字符串比较不起作用? C

Why is this string comparison not working? C

我正在尝试比较用户输入是否与文本文件中的输入相同。在 printf("U = %s, R = %s.", uAts, rline); 行我得到 a = a,但它仍然转到 else 语句。也许还有其他一些我不知道的比较 C 语言字符串的方法?

void nextQ(int klL, FILE *kl, FILE *ats, FILE *atsR){
    int i, uAts[500], at;
    char kline[500], aline[500], rline[500], b[1];
    system("cls");

    for (i = 0; i <= klL; i++){
        fgets(kline, 500, kl);
        fgets(aline, 500, ats);
        fgets(rline, 500, atsR);
 }
    printf("%s\n", kline);
    printf("%s\n\n", aline);
    printf(rline);

    printf("Jusu atsakymas: ");
    scanf("%s", &uAts);
    printf("U = %s, R = %s.", uAts, rline);
        if(uAts == rline){
            printf("Klausimas atsakytas teisingai!\n");
            printf("Noredami pereiti prie kito klausimo iveskite bet koki simboli ");
            scanf("%s", b);     
            nextQ(klL+1, kl, ats, atsR);        
        }else{
            printf("Neteisingai\n");
        }
}


int main(int argc, char *argv[]) {
    int pas, klL = 0;
    char term;
    bool menu = true;

    //textiniu failu nuskaitimas
    FILE *kl;
    kl = fopen("Klausimai.txt", "r");
    FILE *ats;
    ats = fopen("Atsakymai.txt", "r");
    FILE *laim;
    laim = fopen("Laimejimas.txt", "r");
    FILE *atsR;
    atsR = fopen("AtsR.txt", "r");

    do{
        //menu
        printf("1. Pradeti zaidima.\n");
        printf("2. Iseiti\n");
        printf("Jusu pasirinkimas: ");
        scanf("%d%c", &pas, &term);

        if(pas < 1 || pas > 2 || term != '\n'){
            printf("\nBloga ivestis");
            break;
        }else{
        nextQ(klL, kl, ats, atsR);
        }
    }while(menu);

    return 0;
}

除了评论中提到的问题:你不能这样比较字符串:

if(uAts == rline) 

这将比较 char 数组的 地址 ,它们总是不同的。使用

if( strcmp( uAts, rline ) == 0 )

相反。 strcmp() 将比较两个以 NUL 结尾的字符数组(在 C 中又名 "strings")的 内容