有没有一个好方法可以说如果char数组包含null然后做一些事情?

时间:2017-09-16 21:00:17

标签: c

我一直试图找到一种很好的方法来找到部分填充的char数组的结尾。我一直在尝试的是如果array [x]!= null,但这似乎并没有起作用。

4 个答案:

答案 0 :(得分:0)

您可以使用strlen来实现此目标。

#include <stdio.h>
#include <string.h> // strlen

int main (int argc, char** argv) {
    char str_array[32];
    strcpy (str_array, "I am short");
    printf ("string length: %d\n", strlen(str_array));
    printf ("last index: %d\n", str_array[strlen(str_array)]);
    return 0;
}

这应该返回

string length: 10
last index: 0

请注意strlen ()返回存储在数组中的字符串的长度,该数组也是NULL('\ 0')终止符的索引。

答案 1 :(得分:0)

如果您的char数组以null结尾,则检查第一个null应该有效。如果不是,那你就做错了。 在实践中,需要有一个char来确定char数组的结束,否则无法分辨它的结束,除非你考虑数组本身的长度。

答案 2 :(得分:0)

#include <stdio.h>

int main (int argc, char **argv)
{
   int i ;
   char array[64] ;

   for (i = 0; i < 64; ++i)
      array[i] = 'a' ;

   array[5] = '\0' ;

   for (i = 0; i < 64; ++i)
   {
      if (array[i+1] == '\0')
         break ;
   }

   printf ("the filled string ends after %d characters.\n", i-1) ;

   return 0 ;
}

答案 3 :(得分:0)

以下方式怎么样?

int i=0
char array[30];
fillArray(&array); //some function that writes characters to this array
for(i=0;i<30;i++) {
   if(array[i] == '\0') {
       printf("Char array is a string\n");
       break;
   }
}