gpt4 book ai didi

c - fputs 和 printf 问题

转载 作者:太空宇宙 更新时间:2023-11-04 05:21:13 26 4
gpt4 key购买 nike

我得到的代码如下:

char* writeSpace(int i)
{
fputs(" " + (30-i), stdout);
}

printf("#%i key: %s%svalue: %s%s value2: %s", id, key, writeSpace(10), value, writeSpace(8), value2);

我的输出应该是这样的:

#1 key: foo          value: bar        value2: foobar

但事实并非如此。它看起来像:

                      #1 key: foo(null)value: bar(null)value2: foobar(null)

我的代码有什么问题?

最佳答案

好吧,您要fput将所有这些空间发送到控制台,所以您首先要获取它们。

然后你输出所有其他的东西,所以你得到下一个。

也许您的意思是让 writeSpace 返回 C 风格的字符串,而不是将其打印到控制台。

但是一定要为它分配空间!由于内存缓冲区的所有权有点古怪,因此最好在函数的 之外分配空间。

void writeSpace(char* buf, int i) {
fputs(" " + (30-i), buf);
}

char spaceBuf1[30];
writeSpace(spaceBuf1, 10);

char spaceBuf2[30];
writeSpace(spaceBuf2, 8);

printf("#%i key: %s%svalue: %s%s value2: %s",
id, key, spaceBuf1, value, spaceBuf2, value2);

并考虑使用 实际 C++ 功能,如 iostreams 和 std::string。这会容易得多:

std::cout << "#" << id << " "
<< " key: " << std::setw(30) << key
<< " value: " << std::setw(30) << value
<< " value2: " << value2;

我推荐these resources用于学习地道的 C++。

关于c - fputs 和 printf 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6640975/

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