почему эта программа заканчивается, когда я набираю первое слово и не зацикливается - PullRequest
0 голосов
/ 20 мая 2019

Я хочу сделать цикл программы снова и снова, пока я не наберу конечное слово ****TELOS

/* 1 */  int text_input();

int main() {
    int number;

        text_input();

        return 0;
}


int text_input(char words[M][N]){
    int l=0; /*lines, also how many words the text has */

    char a;
    int i=0;

    printf("Enter the text. (****TELOS for stoping)"); 
    char endword[10];
    strcpy(endword, "****TELOS");            
    char temp[N];    

    while(1){   
        while(1) {
            a = getchar();

            if (a =='\n'){
                if(strcmp(temp, "") == 0){
                    continue;
                }
                else{
                break;
                }   
            }


            else if (a == ' '){
                if(strcmp(temp, "") == 0){
                    continue;    
                }
                else{
                    break;
                }
            }

            else {
                temp[i++] = a;
            }

        }

        if (strcmp(temp, endword) == 0){
            break;
        }
        else{
            strcpy(words[l++],temp);
            memset(temp, ' ', strlen(temp));
        }
    }



   return 0; 
}

1 Ответ

0 голосов
/ 20 мая 2019

Я думаю, что ваш код не работает, потому что вы не установили для каждого элемента конечного слова значение 0, поэтому ваш код должен быть таким

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 10
#define M 10
int text_input(char words[M][N]);

int main() {
     char a[M][N];
        text_input(a);

        return 0;
}


int text_input(char words[M][N]){
     int l=0; /*lines, also how many words the text has */
     char a;
     int i=0;
     char temp[N];    
     char endword[10] = {0,0,0,0,0,0,0,0,0,0};
     printf("Enter the text. (****TELOS for stoping)"); 

     strcpy(endword, "****TELOS");            


     while(1){   
         while(1) {
            a = getchar();

            if (a =='\n'){
                if(strcmp(temp, "") == 0){
                    continue;
                }
                else{
                break;
                }   
            }


            else if (a == ' '){
                if(strcmp(temp, "") == 0){
                    continue;    
                }
                else{
                    break;
                }
            }

            else {
                temp[i++] = a;
            }

        }

        if (strcmp(temp, endword) == 0){
            break;
        }
        else{
            strcpy(words[l++],temp);
            memset(temp, ' ', strlen(temp));
        }
    }



   return 0; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...