首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查扫描器返回的字符串是否为null

如何检查扫描器返回的字符串是否为null
EN

Stack Overflow用户
提问于 2014-03-02 11:13:28
回答 1查看 11.1K关注 0票数 0

我正在用scanf().从用户读取一个输入字符串

我想检查这个字符串是否为NULL (\0)。

这是我的代码:

代码语言:javascript
复制
#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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-02 11:22:21

NULL\0不是一回事,尽管它们的计算值都为零。NULL是一个指针零,也就是说,它是我们对空指针使用的。\0是ASCII号为零的字符,也称为NUL (1 'L'),即值为0的char

char *NULL (即内存中根本没有字符串)和字符串为空(即只包含一个char,即\0,也称为NUL)之间有一个重要的区别。

测试第一个:

代码语言:javascript
复制
if (!string)

或者如果你喜欢更详细的话:

代码语言:javascript
复制
if (string == NULL)

测试第二个:

代码语言:javascript
复制
if (!string[0])

或者如果你喜欢更详细的话:

代码语言:javascript
复制
if (string[0] == 0)

显然,如果需要对这两种情况进行测试,那么首先测试第一个,然后再测试第二个,因为如果stringNULL,则第二个将取消引用一个空指针。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22126825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档