C - 比较并将char *转换为char

时间:2014-04-15 00:37:52

标签: c if-statement casting char

我有以下代码:

char* line[255];
....
line[0] = '1'; // filled char by char
....

char charCode = (char)line[i];
if (charCode == '\t' || charCode == '\n' || charCode == ',' || charCode == ' ')
{
      // do someting
}

我用来查找空格,逗号,制表符或行尾的IF条件。我从GCC收到的警告:

   warning: cast from pointer to integer of different size

有人可以帮我发现这个问题吗?谢谢,

2 个答案:

答案 0 :(得分:3)

变化:

line[0] = "1"; // filled char by char

到此:

line[0] = '1';

另外,改变:

char* line[255];

为:

char line[255];

在C中,双引号"中的字符串文字属于char *类型,而用单引号'括起来的文字是类型为char的字符文字。此外,你已经声明了一个指向字符的指针数组(或者一个字符串数组,基本上),我认为你只需要一个可以容纳255个字符的数组。

答案 1 :(得分:1)

在评论中这样做太难了。代码应如下所示。

char line[255];
....
line[0] = '1'; // filled char by char
....

char charCode = line[i];
if (charCode == '\t' || charCode == '\n' || charCode == ',' || charCode == ' ')
{
      // do someting
}

数组应该是char,而不是char *。这解决了错误。然后不需要演员表。