我想在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)
但是,一旦定义了字符串,这不是将字符串设置为零长度的一般方法.
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终止符.
仅在声明期间允许将字符串文字分配给 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)