我试图比较用户输入是否与文本文件相同。在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;
}
答案 0 :(得分:3)
除了评论中提到的问题:你无法比较这样的字符串:
if(uAts == rline)
将比较char数组的地址,这些将始终不同。使用
if( strcmp( uAts, rline ) == 0 )
代替。 strcmp()
将比较两个NUL终止的char数组的内容(在C中也称为“字符串”)。