初学者的查询:无法在C中反转char数组

时间:2015-08-03 17:41:43

标签: c arrays

首先:真诚地抱怨提出这样一个需要注意的基本问题。我打算使用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数组可能没有多大帮助。我是对的吗?

任何有助于重新获得轴承的解释都将受到高度赞赏。谢谢!

1 个答案:

答案 0 :(得分:3)

;的末尾删除#define。宏是使用文本替换完成的,所以使用分号

while(arr_char[i]!= EOL && i<=9)

将成为:

while(arr_char[i]!= '\n'; && i<=9)

这是错误的。

您还有一个问题,即您的代码可以写入arr_char[10],这超出了数组的末尾。您需要增加数组大小,或将i<=9更改为i<9