首先:真诚地抱怨提出这样一个需要注意的基本问题。我打算使用getchar()&和一个用户输入字符串来反转一个char数组。使用putchar()显示其反向。 [我明白使用printf()&可能会有更简单或更优雅的方法。 scanf(),但我很想在下面用getchar()&找到我的逻辑中的缺陷。的putchar():
#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) ===|
仅供参考:第15行是
while(arr_char[i]!= EOL && i<=9)
2)我也试图打印计数器&#34; i&#34;至于按下&#34;输入&#34;是否正在递增。在输入一个角色后,它似乎就是这样。
3)我已将arr_char数组定义为
int arr_char[10];
意图是如果有人输入&#34; -1&#34;作为EOF / EOL,那么一个char数组可能没有多大帮助。我是对的吗?
任何有助于重新获得轴承的解释都将受到高度赞赏。谢谢!
答案 0 :(得分:3)
从;
的末尾删除#define
。宏是使用文本替换完成的,所以使用分号
while(arr_char[i]!= EOL && i<=9)
将成为:
while(arr_char[i]!= '\n'; && i<=9)
这是错误的。
您还有一个问题,即您的代码可以写入arr_char[10]
,这超出了数组的末尾。您需要增加数组大小,或将i<=9
更改为i<9
。