在char []中存储char会使指针中的整数不带强制转换吗?

时间:2013-11-05 19:22:56

标签: c arrays type-conversion

所以我正在为更大的程序编写骨架,最终将成为消息或IRC服务器。

我遇到的问题是当尝试通过将'\ n'的值更改为'\ 0'时将输入中的行尾字符移除到字符缓冲区

存储缓冲区的结构如下所示:

typedef struct{
    pthread_t tid; //the id of the thread
    char input[8192]; //message space of 2 to the 13th power
}thread_in;

thread_in user[3];

然后我创建了一个指向我的结构的临时数组指针,以便更容易调用它。

char user_input[8192];
strncpy(user[num].input, user_input, 8192);

问题在于下一行代码,它给出了以下警告:

  

警告:赋值在没有强制转换

的情况下从指针生成整数

这是代码:

user_input[strlen(user[num].input)-1] ="\0";

有人可以指出为什么它认为赋值是一个整数,因为它是一个字符数组。

2 个答案:

答案 0 :(得分:1)

您需要'\0',而不是"\0"。前者是单个字符,第二个是字符串文字。将"\0"转换为char是问题所在;字符串文字衰减到指针,char是整数类型。

答案 1 :(得分:1)

"\0"是一个字符数组并衰减成指针。 '\0'是一个角色。所以在

user_input[strlen(user[num].input)-1] = "\0";

您正试图在字符数组中存储指针("\0"的第一个字符的地址)。字符是一种整数,所以在尝试将指针放入字符数组时,必须先将其转换为字符,因为字符是整数类型,这意味着将其转换为整数,因此警告:

  

赋值使用指针生成整数而不使用强制转换