【发布时间】:2014-03-16 12:03:58
【问题描述】:
在我的 C 代码中。我有 char **str 并且需要检查字符串是否为空。我编写了以下代码,因为它适用于 char *str,但出现错误:警告:从编译器中不兼容的指针类型初始化和运行编译代码时出现“分段错误”。检查 **str 是否为空的正确方法是什么?谢谢
char **str = "";
if (**str == 0)
printf("it's an empty string\n");
【问题讨论】:
-
char **是一个指向char数组的指针。你的任务将不起作用。我不知道有什么方法可以始终从数据中分辨出垃圾;这就是为什么main()带有参数数量的原因。 -
你知道C中字符串的类型是什么吗?
-
这两个答案都是正确的。 :)
-
@SeanPedersen:从技术上讲,
argc是多余的,因为argv[argc] == 0(这是有保证的,argv的任何先前元素都不会为空,尽管参数可能为空 - 指向的有效指针一个空字节)。但是,无需计算即可知道有多少参数是很方便的。 -
@JonathanLeffler 我不记得在任何地方……读过。谢谢! (还在学习这些签名的东西——那张贴到你的收件箱了吗?)