gpt4 book ai didi

c - 如何连接字符串但保留每个单独的空终止符?

转载 作者:行者123 更新时间:2023-11-30 16:12:04 26 4
gpt4 key购买 nike

void printHeader(char *Category_Names)
{
printf("%s %s %s %s", Category_Names,(char*)Category_Names+15,(char*)Category_Names+30,(char*)Category_Names+45);
}

首先,为了我的问题,我简化了这个函数。在我的类(class)中,我正在阅读一个输入文件,该文件本质上是一本成绩册,并且我正在创建学生及其成绩的链接列表。无论如何,输入文件的顶部包含 4 个由空格分隔的类别。例如,“期中考试、期末作业、期末测验”有效。对于此项目,我们可以假设每个类别最多 15 个字符(如果不计算空终止符,则为 14 个字符)。这就是我读取输入的方式。

fscanf(file, "%15s %15s %15s %15[^\n]s%*c", category1, category2, category3, category4);

现在我已经了解了背景,我终于可以提出我的问题了。如何连接这些字符串,同时将空终止符保留在结果字符串的中间?显然,让这些空终止符基于 printf 调用中的参数至关重要。在有人建议我改变这种方法之前,我希望我能做到。这是我的教授提供的,如果由我决定,我肯定会采用不同的方式。谢谢

最佳答案

How can I concatenate these strings while keeping null terminators in the middle of the resulting string?

不可能用空字符之后的任何内容形成C字符串字符串'\0'结束。

相反,使用 fwrite() 写入 15*4 字节

void printHeader(char *Category_Names) {
// printf("%s %s %s %s", Category_Names,(char*)Category_Names+15, ...
fwrite(Category_Names, 15, 4, stdout);
}

建议也以二进制形式打开文件。

<小时/>

如果 4 个字符串缺少空格,请考虑另一种方法,用空格填充输出。 IMO,用空字符填充不太可能是使用的方法。

printf("%14s %14s %14s %14s\n", 
Category_Names, Category_Names+15,
Category_Names+30, Category_Names+45);

关于c - 如何连接字符串但保留每个单独的空终止符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58438385/

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