Прежде всего: искренние извинения за то, что вы подняли такую основную проблему, требующую внимания. Я намерен поменять массив символов с помощью строки ввода пользователя, используя getchar() &, отображая его обратное, используя putchar(). [Я понимаю, что может быть проще или более элегантные способы с использованием Е() & зсапЕ(), но я заинтересован, чтобы найти изъян в моей логике ниже с GetChar() & putchar():]Запрос начального: не удалось изменить массив символов в C
#include <stdio.h>
#include <stdlib.h>
#define EOL '\n';
/* Reversing a character array */
int main()
{
int arr_char[10];
int i=0;
/* reading char elements into the array */
printf("Please input the array\n");
arr_char[0]= getchar();
while(arr_char[i]!= EOL && i<=9)
{
i=i+1;
arr_char[i]=getchar();
printf("\ni=%d\n",i);
}
/* display reverse */
while(i>=0)
{
putchar(arr_char[i]);
i--;
}
return 0;
}
1) Я получаю сообщение об ошибке:
reversing char array\main.c|15|error: expected ')' before ';' token|
||=== Build finished: 1 errors, 0 warnings (0 minutes, 0 seconds) ===|
FYI: Строка 15 является
while(arr_char[i]!= EOL && i<=9)
2) Я также пытаюсь вывести счетчик «я», чтобы увидеть, является ли это быть вкл после нажатия «Enter» после ввода символа, и кажется, что он это делает.
3) Я определил массив arr_char как
int arr_char[10];
с намерением, что если кто-то входы «-1» в качестве EOF/EOL, то массив символов, возможно, не может быть много помощи. Я прав?
Любые объяснения в том, чтобы помочь мне вернуться назад, будем очень благодарны. Благодаря!
Ознакомьтесь с синтаксисом директив препроцессора типа '# define' и как они работают. Подсказка: они делают ** не ** требуют запятой, чтобы прервать заменяющий текст. – Olaf
Спасибо! Глупый я, упустил точку с запятой. Однако как захватить запись «-1» или любую запись типа «Ctl-D», чтобы обозначить конец поля? – neo
Спрашивая, что вы действительно должны прочитать хорошую книгу C. Вы заходите на 'EOF' (не обязательно' -1'!). 'ctrl-D' - это Unix-ключ, который фактически закрывает' stdin'. Обратите внимание, что это ** не ** "конец поля", а "конец файла"! Любой полевой разделитель является специфичным для приложения (новая строка является типичным примером для текста, например) – Olaf