2016-06-20 4 views
0

Итак, прошло уже некоторое время с тех пор, как я последний раз запрограммирован на C, и теперь я снова пытаюсь вернуться на C, но у меня возникают проблемы с моей программой. Программа очень проста, я использую getchar для хранения символов в массиве char, но по какой-то причине программа перестает работать после моего цикла while.Программа перестает работать после цикла while

#include <stdio.h> 
#define MAXLINE 1000 

int main(){ 
    char c; 
    char input[MAXLINE]; 
    int i = 0; 

    while((c = getchar()) != EOF){ 
     input[i] = c; 
     ++i; 
    } 
    printf("Still running"); 
} 

Итак, моя программа не печатает "Still running".

+0

Может ли быть, что вход больше, чем символы «MAXLINE» (1000)? –

+0

Вы действительно отправляете 'EOF', чтобы разбить цикл? –

+2

Кроме того, ['getchar'] (http://en.cppreference.com/w/c/io/getchar) возвращает' int'. Это на самом деле очень важно. –

ответ

2

Отправить EOF (Ctrl + D для * nix Ctrl + Z для Win), он покажет работу Still.

[email protected]:~/program/progEdit# ./stktest.o 
sdf 
fdf 
sdf 
Still [email protected]:~/program/progEdit# 
+0

Спасибо, он работает с этим! – Zyphicx

1

Ваша программа работает только на удачу, потому что getchar возвращает int не char. Причиной этого является то, что getchar может возвращать EOF, что не обязательно представляется в виде char.

Для исправления этой ошибки вам необходимо заменить char c на номер int c.

+0

Да, это была одна из проблем, однако это не сработало, только делая это, мне также пришлось сделать Ctrl + Z после того, как я ввел свой ввод. Я все равно дам вам взнос, так как вы упомянули один из недостатков моего кода. – Zyphicx

Смежные вопросы