在C中初始化一个字符串以清空字符串

maa*_*yan 15 c string

我想在C中初始化字符串以清空字符串.我试过了:

string[0] = ""; 
Run Code Online (Sandbox Code Playgroud)

但它写道

"warning: assignment makes integer from pointer without a cast"
Run Code Online (Sandbox Code Playgroud)

那我该怎么办?

Wil*_*ean 25

您想将字符串的第一个字符设置为零,如下所示:

char myString[10];
myString[0] = '\0';
Run Code Online (Sandbox Code Playgroud)

(或myString[0] = 0;)

或者,实际上,在初始化时,您可以:

char myString[10] = "";
Run Code Online (Sandbox Code Playgroud)

但是,一旦定义了字符串,这不是将字符串设置为零长度的一般方法.

  • `char myString [1] ="";`肯定?您需要null终止符的空间. (3认同)

Mat*_*ner 21

除了Will Dean的版本,以下是整个缓冲区初始化的常见内容:

char s[10] = {'\0'};
Run Code Online (Sandbox Code Playgroud)

要么

char s[10];
memset(s, '\0', sizeof(s));
Run Code Online (Sandbox Code Playgroud)

要么

char s[10];
strncpy(s, "", sizeof(s));
Run Code Online (Sandbox Code Playgroud)


bad*_*err 10

假设您的数组'string'已经存在,请尝试

string[0] = '\0';
Run Code Online (Sandbox Code Playgroud)

\0 是标记字符串结尾所需的显式NUL终止符.


Ama*_*osh 5

仅在声明期间允许将字符串文字分配给 char 数组:

char string[] = "";
Run Code Online (Sandbox Code Playgroud)

这将 string 声明为大小为 1 的 char 数组并使用 对其进行初始化\0

也试试这个:

char str1[] = ""; 
char str2[5] = ""; 
printf("%d, %d\n", sizeof(str1), sizeof(str2)); //prints 1, 5
Run Code Online (Sandbox Code Playgroud)