C'est un code de chaîne inverse mais la boucle ne peut pas être terminée et continue de prendre des entrées
Comment puis-je y mettre fin
#include <stdio.h>
#include <string.h>
#define len 100
int main() {
char str[len];
int i;
do {
gets(str);
for (i = (strlen(str) - 1); i > -1; i--) {
printf("%c", str[i]);
}
printf("\n");
} while (str[0] != '\0');
return 0;
3 Réponses :
maintenant, il y a quelques points (code de réponse ci-dessous)
vous ne suivez pas correctement la question. Fondamentalement, vous imprimez main à main avec une entrée. tandis que la question indique spécifiquement une entrée multi-lignes.
votre code d'origine continue de prendre des entrées car, encore une fois, vous ne suivez pas la question. Il dit que la dernière chaîne est une chaîne vide. vous appuyez sur Entrée dans une chaîne vide, le code d'origine se terminera.
Se souvenir de la dernière chaîne d'entrée doit être vide, c'est la condition de fin
pooL maet olleH emocleW
entrée d'échantillon
Hello team Loop Welcome
sortie d'échantillon
#include <stdio.h>
#include <string.h>
int main(){
char str[100];
char stringArray[50][100]={0};
int k,m,count=0,i=0,j=0;
do {
fgets(str,100,stdin);
k=strlen(str);
for(m=0;m<k-1;m++){
stringArray[count][k-m-2]=str[m];
}
count++;
}
while (str[0] != '\n');
for(i=0; i<count; i++){
for(j=0;stringArray[i][j]!=0;j++){
printf("%c",stringArray[i][j]);
}
if(i<count-1){
printf("\n");}
}
return 0;
}
add str [0] = '\ 0'; avant obtient et c'est fait. c'est parce que faire une terminaison de boucle et sortir de la boucle après avoir cliqué sur Entrée.
#include <stdio.h>
#include <string.h>
#define len 100
int main() {
char str[len];
int i,lenh;
do{
str[0]='\0';
gets(str);
lenh=strlen(str);
for(i=lenh-1;i>=0;i--)
{
printf("%c",str[i]);
}
printf("\n");
}while(str[0]!='\0');
return 0;
}
Vous devriez vérifier la valeur de retour de
gets. S'il échoue,strne sera pas affecté, donc pas nulpouvez-vous s'il vous plaît élaborer plus?
déjà essayé mais j'ai eu la même erreur
aussi le même résultat
mon instructeur m'a dit que c'était quelque chose avant la déclaration obtient
Ne publiez pas d'images de texte
str[0]est le premier élément de la chaîne. Ce ne sera jamais\0= la fin de la chaîne, au cas où vous auriez réellement entré quelque chose.comment résoudre ça?
Utilisez:
while (gets(str))Ne pas utiliser
getstandis que (gets (str)) n'a pas fonctionné
Votre code fonctionne (s'arrête correctement après avoir entré une ligne vide) après avoir ajouté
}à la fin du code. Veuillez publier un exemple minimal et reproductible .