c中的char*什么时候以null结尾?
When does a char* ends with null in c?
我对 char* 感到困惑 null-termination
所以我决定研究一下我能找到的案例。这些字符串文字是否以 null 结尾?
char str1[512]="This is a random string"
char *str2 = strtok(buffer,"\n,")
我找到了答案。 This ends with null.
fgets(stdin, str3, 512)
scanf("%s",str4)
- 代码片段:
char str[5];
for(int i=0; i<5; i++) scanf("%c",&str[i]);
注意 1:我假设c库中的所有标准函数returns一个char*
,null终止字符串。
注释 2:如何检查字符串是否以 null 结尾? (我尝试了 this 方法,但它会打印出随机的东西。)
编辑:只需向我展示一种确定字符串文字是否以 null 结尾的方法就足够了。我将逐个分析案例并在此处为未来的读者更新。
这样的例子绝不是详尽无遗的,但它使一些清晰。答案其实很简单。任何以 '\0' 结尾的字符数组都称为字符串。程序员自主决定自己需要什么。
#include<stdio.h>
int main(void)
{
char w[]="mamamia";
int i;
for(i=0;i<sizeof(w);i++)
{
if(w[i]=='[=10=]')
printf("w[%d]==null\n",i);
else
printf("w[%d]== %c \n",i,w[i]);
}
return 0;
}
我对 char* 感到困惑 null-termination
所以我决定研究一下我能找到的案例。这些字符串文字是否以 null 结尾?
char str1[512]="This is a random string"
char *str2 = strtok(buffer,"\n,")
我找到了答案。 This ends with null.fgets(stdin, str3, 512)
scanf("%s",str4)
- 代码片段:
char str[5]; for(int i=0; i<5; i++) scanf("%c",&str[i]);
注意 1:我假设c库中的所有标准函数returns一个char*
,null终止字符串。
注释 2:如何检查字符串是否以 null 结尾? (我尝试了 this 方法,但它会打印出随机的东西。)
编辑:只需向我展示一种确定字符串文字是否以 null 结尾的方法就足够了。我将逐个分析案例并在此处为未来的读者更新。
这样的例子绝不是详尽无遗的,但它使一些清晰。答案其实很简单。任何以 '\0' 结尾的字符数组都称为字符串。程序员自主决定自己需要什么。
#include<stdio.h>
int main(void)
{
char w[]="mamamia";
int i;
for(i=0;i<sizeof(w);i++)
{
if(w[i]=='[=10=]')
printf("w[%d]==null\n",i);
else
printf("w[%d]== %c \n",i,w[i]);
}
return 0;
}