J'ai ce code et je veux que ma boucle se termine lorsque l'utilisateur donne "###".fgets en langage C impressions multiples après avoir obtenu la chaîne
int main(){
char s[10];
printf("Give string: ");
fgets(s,11,stdin);
do{
printf("Give string: ");
fgets(s,11,stdin);
}while (s!="###");
return 0;
}
Jusqu'à présent, il est ok, mais lorsque l'utilisateur donne une entrée plus de 11 caractères j'avoir plusieurs copies de « Give String ». Je l'ai essayé avec scanf
et je l'ai fait correctement. Quelqu'un peut-il me donner une solution pour le faire avec fgets
? I mean the output looks like this.
Deux points: vous ne pouvez pas comparer une chaîne C avec 's = "###"', et 'fgets' comprend toute fuite' newline', dans la chaîne, donc même 'strcmp' ne fonctionnera pas. –
BTW, vous déclarez 'scar s [10];' donc au plus neuf caractères et l'octet nul de fin, mais vous appelez 'fgets' avec * 11 *; et une question fix-my-code est hors-sujet! –
De plus, ne lisez pas 11 caractères dans un tableau de 10 caractères. –