我正在尝试保存数组中有多少空元素。这是我到目前为止所做的,但它打印出所有行都是“非空”,这是错误的。 我怎么能这样做?
{{1}}
答案 0 :(得分:8)
执行arr[i] == NULL
时,arr[i]
衰减到arr[i]
(即&arr[i][0]
)中指向数组第一个元素的指针,该指针将永远是NULL
。
我怀疑你想要,例如类似于arr[i][0] == '\0'
。
答案 1 :(得分:5)
两个问题:
此:
char arr[10][50]={NULL};
应该是
char arr[10][50]=; /* Initializes the whole 2D array with zeros */
或
char arr[10][50]={{'\0'}}; /* Does the same thing as above; '\0' == 0 */
这里的问题是:
NULL
通常与指针一起使用,但arr
用于存储char
s,而char
s不是指针。下面:
if(arr[i] == NULL)
检查2D阵列的每一行是否为NULL
。换句话说,您正在检查每个子阵列是否具有地址NULL
。这不是真的,可能与你的想法相反。
@Joachim Pileborg's answer提供了有关此问题的更多信息以及可能的解决方案。