gpt4 book ai didi

c - 字符串和指针操作

转载 作者:太空宇宙 更新时间:2023-11-04 00:51:17 25 4
gpt4 key购买 nike

我正在尝试打印给定程序中的所有 4 个字符串。但我无法打印字符串。使用下面的代码,我得到了一些奇怪的输出。

int main()
{
char szStr[] = "India\0Japan\0America\0Australia";
char *p = szStr;

while(p)
{
printf("%c", p);
p++;
}

return 0;
}

最佳答案

while(p)

相同
while(p != NULL)

这当然总是正确的——字符串文字指向一个有效的内存位置。我觉得你把这个和

混淆了
while(*p)

或等效的

while(*p != 0)

因为它会一直运行,直到它在字符串中找到 0 终止符。 不过,这也不够好。您不知道刚刚打印的是哪个字符串。您必须手动跟踪字符串的数量。另外,为什么要逐个字符地打印它,为显示的每个字节调用相当昂贵的 printf() 函数?太浪费了。怎么样

char szStr[] = "India\0Japan\0America\0Australia";

char *p = szStr;

for (int i = 0; i < 4; i++) {
puts(p);
p += strlen(p) + 1;
}

不过,我不明白为什么这比简单地存储字符串数组更简单或更好。像这样:

const char *strings[] = {
"India",
"Japan",
"America",
"Australia"
};

for (int i = 0; i < sizeof(strings) / sizeof(strings[0]); i++)
puts(strings[i]);

关于c - 字符串和指针操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18126872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com