gpt4 book ai didi

c - 为什么我在使用 fprintf 时会出现不一致的行为?

转载 作者:行者123 更新时间:2023-12-02 08:17:29 25 4
gpt4 key购买 nike

据我所知,fprintf 接受一个指向字符数组的指针作为参数,并打印它。我不知道它“什么时候”停止。举以下例子:

假设:print_s

void print_s(const char* s) {
fprintf(stdout,"%s",s);
}

示例 1:

char c[6];
c[0] = 'a';
c[1] = 'b';
c[2] = 'c';
c[3] = 'd';
c[4] = 'e';
print_s((char*) c);

输出:

abcd // e not printed!

示例 2:

char c[6];
c[0] = 'a';
c[1] = 'b';
c[2] = 'c';
c[3] = 'd';
c[4] = 'e';
c[5] = 'b';
print_s((char*) c);

输出:

abcdb // works as expected

示例 3:

char c[6];
c[0] = 'a';
c[2] = 'c';
c[3] = 'd';
c[4] = 'e';
print_s((char*) c);

输出:

a<someGarbage>cd // works as expected

示例 4:

char c[6];
c[0] = 'a';
c[1] = 'b';
c[2] = 'c';
c[3] = 'd';
c[4] = 'e';
c[5] = '\0';
print_s((char*) c);

输出:

abcde // works as expected

最佳答案

请注意,声明字符数组并逐一初始化其元素时,需要从第一个字符开始连续为字符赋值,最后一个字符应为null '\0' 值。

例子:

char a[6];
a[0]='a';
a[1]='b';
a[2]='c';
a[3]='d';
a[4]='\0';

这会将数组 a 声明为字符串 "abcd"

如果您未能以类似的方式初始化,您的字符串很容易得到垃圾字符值,任何 I/O 函数都无法正确解释这些值,并会产生意想不到的结果。

关于c - 为什么我在使用 fprintf 时会出现不一致的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40642744/

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