微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c 中 char* 何时以 null 结尾?

如何解决c 中 char* 何时以 null 结尾?

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

  1. char str1[512]="This is a random string"
  2. char *str2 = strtok(buffer,"\n,") 我找到了答案。 This ends with 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: 如何检查字符串是否以空字符结尾? (我尝试了 this 方法,但它会打印随机的东西。)

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

解决方法

这样的例子绝不是详尽无遗的,但它带来了一些清晰度。答案其实很简单。任何以 '\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;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。