在C中检查char数组的内容

时间:2016-04-27 15:48:32

标签: c arrays struct

我有以下结构,并有一些代码在下面使用它。控件不会进入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)
}

3 个答案:

答案 0 :(得分:0)

// iterate over smaller list for(int i = 0; i < SmallerList.size(); i++) { TotalList.get(i).setText(SmallerList.get(i)); } // set remaining items for (int i = SmallerList.size(); i < TotalList.size(); i++) { TotalList.get(i).setText("---"); } 的类型是什么?因为,如果它是一个字符串,那么当你将它设置为char message时它将隐式转换。也许,你需要这样做:

= '\0';

答案 1 :(得分:0)

strcpy(chat_info[queue].message,filedata.data);
/* You have assigned some data for chat_info[queue].message
 * in the above step assignment should be successful.
 */

if(chat_info[queue].message[0]=='\0')
/* How can message[0] be null? It will never be. Think of what you're
 * trying to achieve with the condition.
 * If you're checking for a non-empty message, then it should be
 * chat_info[queue].message[0]!='\0'
 */
{
./* some stuff here */
}

答案 2 :(得分:0)

我看到的第一个问题:

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'何时为真。

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