标题可能有点用词不当......只是因为我不确定我的char指针是否指向NULL,或者它只是指向大小为0的char数组.
所以我有
char* data = getenv("QUERY_STRING");
Run Code Online (Sandbox Code Playgroud)
我想检查数据是否为空(或长度<1).我试过了:
if(strlen(data)<1)
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
==24945== Invalid read of size 1
==24945== at 0x8048BF9: main (in /cpp.cgi)
==24945== Address 0x1 is not stack'd, malloc'd or (recently) free'd
Run Code Online (Sandbox Code Playgroud)
我也试过了
if(data == NULL)
Run Code Online (Sandbox Code Playgroud)
但结果相同.
这里发生了什么?我已经尝试过使用数据,这很好用.我似乎无法检查它是否为空或空.
我意识到这些是两个不同的东西(空和空).我想知道这里有哪一个数据,以及如何检查它是否为空/空.
Cam*_*ron 21
使用getenv,你必须处理这两种情况!(是的!)如果未设置环境变量,则该函数返回NULL.如果设置了,那么你得到一个指向它设置的值的指针,它可能是空的.所以:
const char* data = getenv("QUERY_STRING");
if (data != NULL && data[0] != '\0') {
// Variable is set to value with length > 0
// ...
}
Run Code Online (Sandbox Code Playgroud)
显然,在尝试确定其长度或读取它指向的任何字符之前,您需要检查它是否为NULL - 这就是为什么上述两个条件按照if它们的顺序排序的原因.
| 归档时间: |
|
| 查看次数: |
13583 次 |
| 最近记录: |