QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2168|回复: 12

请问关于判断字符串数组是否为空的问题

[复制链接]
发表于 2004-9-8 16:58:55 | 显示全部楼层 |阅读模式
代码如下:
[code:1]
#include<stdio.h>

int main(void)
{
    char a[8]="",b[8]="";
    printf("a:#%s#,b:#%s#\n",a,b);
    if(a||b)
        printf("empty\n");
    return 0;
}

[/code:1]
 楼主| 发表于 2004-9-8 17:01:55 | 显示全部楼层
请问if(a||b)是什么意思?为什么当a,b都是空时依然会执行printf语句?
回复

使用道具 举报

 楼主| 发表于 2004-9-8 17:02:54 | 显示全部楼层
而且当a,b不为空时也要执行printf语句。这是为什么?谢谢。
回复

使用道具 举报

发表于 2004-9-8 17:36:38 | 显示全部楼层
你可以输出a和b的值看看~
回复

使用道具 举报

发表于 2004-9-8 17:45:23 | 显示全部楼层
a和b是指针,在这段程序里他是不会是NULL的.
回复

使用道具 举报

 楼主| 发表于 2004-9-8 19:04:05 | 显示全部楼层
[quote:e296efbde6="mozilla"]a和b是指针,在这段程序里他是不会是NULL的.[/quote]
我想上面代码中的a和b都是空数组吧,至少用printf打印出来什么也没有。我对if(a||b)的理解是:如果a或b中有东西,printf语句就会执行。可以当a和b都是空的时候却也能执行。真是不解。
回复

使用道具 举报

发表于 2004-9-8 19:33:14 | 显示全部楼层
a[0]和a是不同的
a是保存数组值的指针,是某个内存单元的地址,应该不会是空
回复

使用道具 举报

发表于 2004-9-8 19:43:49 | 显示全部楼层
这个…………我觉得 if (*a||*b)还差不多。
可我觉得象我这么写也有问题…………
回复

使用道具 举报

发表于 2004-9-8 19:55:40 | 显示全部楼层
(a||b)在这段程序里根本就没意义。
回复

使用道具 举报

 楼主| 发表于 2004-9-9 09:38:59 | 显示全部楼层
我想我明白你们的意思了。你们是说因为a和b是数组名,所以a和b总是有值的,而不管这个两个数组是否符值。对吗?
如果把a和b改成指针就可以了。
回复

使用道具 举报

发表于 2004-9-9 09:43:30 | 显示全部楼层
第一句对,第二句:看你怎么改了.
if(a[0]==0 || b[0] ==0)
     printf("a or b is empty");
回复

使用道具 举报

 楼主| 发表于 2004-9-9 09:52:49 | 显示全部楼层
原来指针和数组是不同的
回复

使用道具 举报

 楼主| 发表于 2004-9-9 09:55:06 | 显示全部楼层
谢谢你们。我把a和b定义为两个指针就对了。真的谢谢。   
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 13:38 , Processed in 0.043033 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表