0
votes

Pourquoi la boucle ne peut-elle pas se terminer dans mon code?

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

entrez la description de l'image ici

 #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;

c

12 commentaires

Vous devriez vérifier la valeur de retour de gets . S'il échoue, str ne sera pas affecté, donc pas nul


pouvez-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 gets


tandis 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 .


3 Réponses :


-1
votes

maintenant, il y a quelques points (code de réponse ci-dessous)

  1. 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.

  2. 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;
}


0 commentaires

0
votes

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.


0 commentaires

0
votes
#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;
    }

0 commentaires