c 中 char* 何时以 null 结尾?

问题描述 投票:0回答:1

我对 char* 感到困惑

null-termination
所以我决定对我能找到的案例进行研究。这些字符串文字是否以 null 结尾?

  1. char str1[512]="This is a random string"
  2. char *str2 = strtok(buffer,"\n,")
    我找到了答案。 以 null 结尾。
  3. fgets(stdin, str3, 512)
  4. scanf("%s",str4)
  5. 代码片段:
    char str[5];    
    for(int i=0; i<5; i++) scanf("%c",&str[i]);
    

1:我假设 c 库中所有返回

char*
、null 的标准函数都会终止字符串。
注 2: 如何检查字符串是否以 null 结尾? (我尝试过this方法,但它会打印随机的东西。)

编辑只需向我展示一种确定字符串文字是否以空结尾的方法就足够了。我将详细介绍每个案例,并为未来的读者更新。

c string null-terminated
1个回答
0
投票

这样的例子并不详尽,但它带来了一些清晰的信息。答案其实很简单。任何以 ' ' 结尾的字符数组都称为字符串。程序员独立决定他需要什么。

#include<stdio.h>

int main(void)
{
    char w[]="mamamia";
    int i;
    for(i=0;i<sizeof(w);i++)
    {
        if(w[i]=='\0')
            printf("w[%d]==null\n",i);
        else
            printf("w[%d]== %c \n",i,w[i]);
    }
    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.