所以我正在为更大的程序编写骨架,最终将成为消息或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";
有人可以指出为什么它认为赋值是一个整数,因为它是一个字符数组。
答案 0 :(得分:1)
您需要'\0'
,而不是"\0"
。前者是单个字符,第二个是字符串文字。将"\0"
转换为char
是问题所在;字符串文字衰减到指针,char
是整数类型。
答案 1 :(得分:1)
"\0"
是一个字符数组并衰减成指针。 '\0'
是一个角色。所以在
user_input[strlen(user[num].input)-1] = "\0";
您正试图在字符数组中存储指针("\0"
的第一个字符的地址)。字符是一种整数,所以在尝试将指针放入字符数组时,必须先将其转换为字符,因为字符是整数类型,这意味着将其转换为整数,因此警告:
赋值使用指针生成整数而不使用强制转换