Ввод и вывод набора символов с массивом с использованием getchar () и putchar () - PullRequest
1 голос
/ 06 ноября 2019

Я новичок в мире языка программирования Си и не очень знаком с функциями putchar () и getchar (). Я пытаюсь написать код, который читает набор введенных символов и сохраняет его в массиве. Вот мой код:

#include<stdio.h>
#include<ctype.h>
#define MAX_SIZE 100

int main(){
    int i;
    char c[MAX_SIZE]={0};
    printf("Enter message:");

    for(i=0;getchar()!='\n';i++){
        c[i] = getchar();    /*looks like some error here that the compiler didn't found out.....*/
    }

    for(i=0;c[i]!='\n';i++){
        putchar(c[i]);
    }

    return 0;
}

Программа работает успешно, но не работает. Выводимый результат хаотичен и совершенно не имеет смысла. Интересно, что не так с моим кодом, так как он не выглядит для меня ошибкой (так же, как и компилятор считает это правильным). Хотел бы я получить объяснение, кроме как найти правильный способ написать это.

1 Ответ

0 голосов
/ 06 ноября 2019

Вместо этого используйте следующее

int value;

for ( i = 0; i < MAX_SIZE && ( value = getchar() ) != EOF && value != '\n'; i++ )
{
    c[i] = value;
}

for ( int j = 0; j < i; j++ )
{
    putchar( c[j] );
}

putchar( '\n' );

В противном случае, по крайней мере, в этом цикле

for(i=0;getchar()!='\n';i++){
        ^^^^^^^^   

вы пропускаете каждый четный символ

И заголовок <ctype.h> можетбыть удален, потому что ни одна декларация из заголовка не используется в программе.

...