Палиндром в C с использованием scanf и без функций библиотеки строк - PullRequest
0 голосов
/ 31 января 2019

Назначение - получить входную строку и не использовать функции библиотеки строк, чтобы иметь возможность обрабатывать строку.этот код в настоящий момент даже не распечатывает строку, в которую я попал. Когда я удаляю функции из основного, он волшебным образом начинает печатать.любая помощь будет принята с благодарностью

    #include <stdio.h>
#include <string.h>

#define SIZE 32

int isQuit(char str[]);
void isPalindrome(char str[]);


int main (){
    int cont = 0;
   char str[SIZE];
   fflush(stdin);
   printf("please enter a word:\n");
   scanf("%s\n", str);
   printf("%s\n", str);

  while(cont == 0)
  {
    scanf("%s\n", str);
   printf("%s\n", str);
     cont =  isQuit(str);
    isPalindrome(str);
  }
   return 0;
}

Ответы [ 2 ]

0 голосов
/ 31 января 2019

В вашем коде есть несколько ошибок:

while(isQuit(str) == 0)
{ 
    isPalindrome(str);
    return 0 ;
}

Поскольку в теле цикла есть ключевое слово return (безусловно), цикл будет выполняться не более одного раза.

Кроме того, ни isQuit, ни isPalindrome не принимают данные от пользователя.Это означает, что даже если бы вы исправили цикл, удалив оператор return, он все равно был бы неправильным;у вас будет бесконечный цикл isQuit и isPalindrome, передаваемый в тот же str, который запрашивается у пользователя в строке 15.

Что вам нужно сделать, это изменить свой цикл whileпостоянно опрашивать пользователя на предмет ввода и действовать в соответствии с ним, в дополнение к проблемам, указанным в ответе @ paddy.

0 голосов
/ 31 января 2019

Скорее всего, вы страдаете от буферизации линии в вашем терминале.Пока вы не введете символ новой строки, любые написанные символы не отображаются.

Попробуйте добавить новую строку при отображении введенного вами значения:

printf("%s\n", str);

То же самое относится и к любым другим printf вызовам, которые вы делаетечто вы хотите, чтобы отображались.

Кстати, ваш тест нулевого завершения неверен.Экранирующий символ \, а не /.Измените ваш цикл на:

while (str[h] != '\0')

Или просто:

while (str[h])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...