2015-09-15 3 views
-2

Я пытаюсь, чтобы моя программа выводила слова, введенные в мою программу, на экран. Пока моя программа выводит случайные символы в зависимости от того, что я набираю. Например, если я вводю слово hey, он выводит на экран%. Как я могу исправить это, чтобы вывести слово hey на экране? Мой код ниже.Программирование на языке C, как выводить введенную строку на экран?

#include <stdio.h> 
#include<conio.h> 

int main(){ 
    int word; 
    char cont; 
    for (;;){ 
     int countword = 0; 
     int countpunct = 0; 
     printf("\nEnter the String: "); 
     while ((word = getchar()) != EOF && word != '\n'){ 
      if (word == ' ' || word == '.' || word == '?' || word == '!' || word == '(' || word == ')' || word == '*' || word == '&'){ 
       countword++; 
      } 
      if (word == '.' || word == '?' || word == '!' || word == '(' || word == ')' || word == '*' || word == '&'){ 
       countpunct++; 
      } 
     } 

     printf("%c", word); 

     printf("\nThe number of words is %d.", countword); 

     printf("\nThe number of punctuation marks is %d.", countpunct); 

     printf("\nContinue? Y/N?"); 
     scanf("%c", &cont); 
     if (cont != 'y' && cont != 'Y'){ 
      return 0; 
     } 
    } 
} 
+0

Вы не печатаете значение 'word'. Используйте 'printf ("% c ", word);'. Кроме того, нет необходимости делать свой тип «int». –

+2

Если вы раньше не использовали отладчик, возможно, это время. Шаг через код, строчный за строкой, отслеживая все переменные и их изменения, и проблема, надеюсь, станет ясна. –

+1

переместите 'printf' внутри цикла, если вы хотите напечатать каждый символ –

ответ

1

Вы используете & с printf(). Он будет печатать адрес переменной (а не ее значение)!

ли это вместо:

printf("%c", word); // notice there is no & 

Кроме того, я заметил несколько вещей в вашем коде стоит отметить:

word объявлен как int, но читать и отпечатанные как char. Зачем?

+1

Помните, что 'getchar' возвращает' int'. И это '(char) EOF! = (Int) EOF'. –

1

Ваш while петля позволяет убедиться, что word держит либо EOF или \n в то время как он выходит из цикла while.

while ((word = getchar()) != EOF && word != '\n') 
Смежные вопросы