2013-06-09 5 views
0

Я только начинаю с C. Я написал очень простой код для практики, который должен читать ввод с клавиатуры в массив, выводить длину самой длинной строки и затем печатать ее. Theres функция для чтения ввода, я хочу, чтобы она печатала каждый символ, поскольку он присваивается массиву каждый раз, но он не работает. Он печатает некоторые странно выглядящие персонажи. Я искал «массив печати мусора». но не нашел ответа.Почему элементы массива не печатаются правильно?

int getline(char line[]) 
    /* 
    This function 1) Reads a line of input until a '\n', 
        2) Returns the length of the line and 
        3) Saves the line in the array "line[]" 
    */ 
    { 
     int c,i; 
     i=0; // The character count 
     printf("Enter characters:\n"); 

     while((c=getchar())!='\n') // Reads input until it hits a '\n' 
     { 
      line[i]=c; 
      i++; 
      printf("char %d = %c \n ",i,line[i]);// 

Почему этот "Printf" работать правильно? Он печатает странный символ на второй заполнителем

 } 
     printf("you typed %d characters.\n",i); //Outputs the number of characters typed 

     return i; 
    } 
+3

print line [i] before i ++ – holmium

+0

Как вы называете getline (x)? Что такое объявление x? – Jens

+0

Что делать, если getchar возвращает 'EOF'? Вы также должны иметь дело с этим, иначе он будет рассматриваться как персонаж, что неверно. – Jens

ответ

1

Вы печати line[i]после вы увеличивается i. Таким образом, вы всегда печатаете элемент после того, который вы только что установили, что обычно является мусором.

Поместите линию

i++; 

в конце вашего while цикла.

+0

Большое спасибо Kninnug! Работает сейчас. Ура. –

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