gpt4 book ai didi

检查 C 中 char 数组的内容

转载 作者:行者123 更新时间:2023-11-30 19:39:09 25 4
gpt4 key购买 nike

我有以下结构,并且有一些代码可以在下面使用它。控件不会进入 if 语句(我需要检查 chat_info[queue].message 是否为空)

struct chat{
char message[MAXNAME];
int client;
int group;
int flag;
};
.
.
.
.

if(filedata.data==NULL)
{
printf("\n data is %s",filedata.data);} //displays "data is "
chat_info[queue].message[0]='\0'; //setting 0 before copying data
strcpy(chat_info[queue].message,filedata.data);
printf("\n data is %s",chat_info[queue].message);//displays "data is "
if(chat_info[queue].message[0]=='\0'){
// not going into this if statement
//I also tried if(chat_info[queue].message== "") and if(chat_info[queue].message== NULL)
}

最佳答案

我看到的第一个问题:

if (filedata.data == NULL)

也可以写成:

if (!filedata.data)

进入 if 语句后,您尝试将 filedata.data 的内容复制到 chat_info[queue].message 中。但是,我们之前确定 filedata.data 没有指向任何内容。它是 NULL。使用带有 NULL 指针的 strcpy() 作为源应该不起作用。

也许你的意思是:

if (filedata.data != NULL)

也可以写成:

if (filedata.data)

其次,如果 filedata.data 不为 NULL,请考虑 chat_info[queue].message[0] == '\0' 何时为 true。

strcpy(chat_info[queue].message, filedata.data);
if(chat_info[queue].message[0] == '\0') {
// Message was determined to be empty.
}

仅当 filedata.data 为空字符串时才为真。 (注意:这与 NULL 不同!) 这是您想要的吗?如果是这样,当前的代码应该可以正常工作。

引用:strcpy() documentation

关于检查 C 中 char 数组的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36894757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com