这是我的代码段
main() {
char *filename;
if(1 > 2) {
filename = "file.txt"
}
if(filename != NULL (also tried 0) {
do something
}
return 0;
}
我的问题是如何检查文件名var是否已赋值。我可以使用strcmp,但rvalue可以与“file.txt”不同
答案 0 :(得分:9)
变化:
char *filename;
要:
char *filename = NULL;
然后您的NULL
测试将起作用。
如果不初始化此指针,则其值为未定义。这就是你的测试失败的原因。编译器假设你不关心它有什么价值。
答案 1 :(得分:0)
您必须自己初始化指针,否则它没有保证的起始值。
char *filename = NULL;
答案 2 :(得分:0)
每当您声明(或定义)变量时,将它们初始化为0
或NULL
(如果指针),然后对它们进行检查!
例如,
int i = 0;
..
if (!i) {
}
对于指针,
int *p = NULL;
..
if (!p) {
}