【发布时间】:2014-10-28 13:19:01
【问题描述】:
我有一个 void 函数,它从全局变量中获取字符串并打印出来。
问题是即使字符串是空的,void 函数也会打印一条消息/做一些事情。 所以如果全局变量是空的,它只会打印“消息是:” 如果字符串有字符,我只想做一些事情。
我要做的是检查字符串是否不为空,然后打印一条消息。
// global variable
char msg[30];
scanf("%s", &msg);
void timer(void) {
//i want to only print if there is a message
printf("message: %s", msg);
}
感谢您的帮助
【问题讨论】:
-
你试过了吗?
-
@juanchopanza 我们确定 strln 不会在这里返回 30 吗?
-
@4rlekin 那么字符串不会为空。我假设一个以空值结尾的字符串。否则问题就不同了。
-
@juanchopanza 我的意思是,如果 scanf() 不起作用,未初始化的数组将包含 30 * sizeof(char) 字节的垃圾 AFAIK 也从 scanf() 返回表示失败/成功
标签: c string if-statement printf