我正在用scanf().从用户读取一个输入字符串
我想检查这个字符串是否为NULL (\0)。
这是我的代码:
#include<stdio.h>
char *argument; // argument for mycat
scanf("%s", &argument);
if(fork()==0) // at child
{
printf("Child process: about to execute \"mycat %s\"\n", &argument);
fflush(stdout);
if(strcmp(argument, "") == 0) // <-- Here is the problem
{
execlp("mycat", "mycat", &argument, NULL); // execute child process
}
execlp("mycat","mycat", NULL);
}我正在用RedHat6.1上的g++编译器编译
编辑:问题在于,无论是对于if语句还是与strlen()一起使用,我都不能取消引用argument。
发布于 2014-03-02 11:22:21
NULL和\0不是一回事,尽管它们的计算值都为零。NULL是一个指针零,也就是说,它是我们对空指针使用的。\0是ASCII号为零的字符,也称为NUL (1 'L'),即值为0的char。
在char *是NULL (即内存中根本没有字符串)和字符串为空(即只包含一个char,即\0,也称为NUL)之间有一个重要的区别。
测试第一个:
if (!string)或者如果你喜欢更详细的话:
if (string == NULL)测试第二个:
if (!string[0])或者如果你喜欢更详细的话:
if (string[0] == 0)显然,如果需要对这两种情况进行测试,那么首先测试第一个,然后再测试第二个,因为如果string是NULL,则第二个将取消引用一个空指针。
https://stackoverflow.com/questions/22126825
复制相似问题