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

Tad*_*das -1 c string comparison

我试图比较用户输入是否与文本文件中的相同。在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;
}
Run Code Online (Sandbox Code Playgroud)

Ing*_*rdt 5

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

if(uAts == rline) 
Run Code Online (Sandbox Code Playgroud)

这将比较字符数组的地址,这些地址总是不同的。用

if( strcmp( uAts, rline ) == 0 )
Run Code Online (Sandbox Code Playgroud)

反而。strcmp()将比较内容2 NUL的终止字符数组(又名在C“串”)。