我们怎么知道C中的字符串元素是未初始化的?

use*_*392 3 c string initialization

有没有办法知道C中字符串中的元素是否有值?我尝试过使用NULL,''和'',但它们似乎没有用.我需要将字符向下移动到索引0而不使用stdlib函数.

#include <stdio.h>

int main()
{  
   char literal[100];

   //literal[99] = '\0'
   literal[98] = 'O';
   literal[97] = 'L';
   literal[96] = 'L';
   literal[95] = 'E';
   literal[94] = 'H';

   int index = 0;

   while(literal[index] != '\0')
   {
      if(literal[index] == NULL)   // does not work
         printf("Empty");              

      else
         printf("%c", literal[index]);

      ++index;                  
   }

   getchar();
   return 0;
Run Code Online (Sandbox Code Playgroud)

}

nos*_*nos 5

literal不可以.由于具有自动存储功能,其元素不会被初始化,数组中的值未定义.

您可以将每个元素初始化为特殊元素并检查该值.你可以改变

char literal[100];

char literal[100] = {0};
Run Code Online (Sandbox Code Playgroud)

将每个元素初始化为0.您必须将while循环终止检查更改为

while(index < 100) {
  if(literal[index] == 0) 
         printf("Empty"); 
   ...
  }
}
Run Code Online (Sandbox Code Playgroud)

如果你需要在数组上执行更多的字符串操作,那可能不是最佳的,因为0现在表示空元素,也是'字符串结尾'.