2012-06-27 2 views
0

Я энтузиаст и новичок в программировании, пробуя этот простой код языка c и скомпилирую его с помощью компилятора gnu. Вот мой код:gcc: ошибка ввода

/*simple program:trying to printf string and get a letter*/

#include "stdio.h" 

int main() 
{ 
    int i=0; 
    char c; 

    while(i++<100){ 
     if(i % 2) 
      printf("%C this is even number",i); 
     if(i==50){ 
      c=getchar(); 
      printf("you enter %c letter",c); 
      } 
    } 
    return 0; 
} 

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

ответ

3

Попробуйте поставить символ новой строки в конце printf текста:

printf("%C this is even number\n",i); 

Также i является int так использовать формат %d:

printf("%d this is even number\n",i); 

Edit: Я только что проверил это с изменения, и это работает для меня.

+0

О, спасибо, это все решит. хотя, когда я просто хочу получить вход с помощью «getchar()», терминал не показывает ни одной буквы, просто следующее приглашение. Это запутывает, так как я просто перешел из базы ОС Windows и еще не знаю linux и gcc environmenttment. – silverthunder01

0

После вашего дисплея вы должны позвонить fflush(stdout).

+0

Добавление '\ n', которое он, вероятно, хочет в любом случае, позаботится об этом. – ugoren

0

Он работал для меня, используя cygwin под Windows Vista.

Я вставил ваш код в файл с именем test.c и запустил gcc test.c, который выдает файл под названием a.exe, который я тогда запускал.

[email protected] ~ 
$ ./a.exe 
this is even number♥ this is even number♣ this is even number this is even numb 
this is even numbern this is even number◄ this is even number this is even numb 
er this is even number this is even number↓ this is even numberthis is even numb 
er this is even number this is even number! this is even number# this is even nu 
mber% this is even number' this is even number) this is even number+ this is eve 
n number- this is even number/ this is even number1 this is even number 
you enter 
letter3 this is even number5 this is even number7 this is even number9 this is 
even number; this is even number= this is even number? this is even numberA this 
is even numberC this is even numberE this is even numberG this is even numberI 
this is even numberK this is even numberM this is even numberO this is even numb 
erQ this is even numberS this is even numberU this is even numberW this is even 
numberY this is even number[ this is even number] this is even number_ this is e 
ven numbera this is even numberc this is even number 
[email protected] ~ 
+0

спасибо, но моя программа не запускается, и она скомпилирована с gcc linux. – silverthunder01

+0

Попробуйте поместить ** printf («Hello world \ n»); ** перед оператором while просто посмотреть, начинаете ли вы выполнять свою программу. – HeatfanJohn

+0

FYI, 'if (i% 2)' истинно, когда i нечетно (остаток равен 1). – HeatfanJohn