gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:29:32 24 4
gpt4 key购买 nike

我正在尝试比较用户输入是否与文本文件中的相同。在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) 

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

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

相反。 strcmp() 将比较两个以 NUL 结尾的字符数组(在 C 中也称为“字符串”)的内容

关于c - 为什么这个字符串比较不起作用? C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37684701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com