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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何连接字符串,但保留每个单独的空终止符?相关的知识,希望对你有一定的参考价值。

void printHeader(char *Category_Names)

    printf("%s %s %s %s", Category_Names,(char*)Category_Names+15,(char*)Category_Names+30,(char*)Category_Names+45);

首先,为了我的问题,我已经简化了该功能。对于我的班级,我正在阅读本质上是一本成绩册的输入文件,并且正在创建学生及其成绩的链接列表。无论如何,输入文件的顶部包含4个用空格分隔的类别。例如,“测验期中家庭作业决赛”有效。对于该项目,我们可以假定每个类别最多15个字符(如果不算空终止符,则为14个字符)。这就是我阅读输入的方式。

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

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

答案

如何连接这些字符串,同时在结果字符串的中间保留空终止符?

无法与null character之后的任何内容组成C stringstring'\0'结尾。

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

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

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

以上是关于如何连接字符串,但保留每个单独的空终止符?的主要内容,如果未能解决你的问题,请参考以下文章

Winsock2 tcp/ip - 一些数据包被忽略可能是由于前一个数据包的空终止符

在 Scala 2.7 中读取文件的行,保留行终止符

C# SQLConnection 池

Android,从其他片段返回的空列表视图

如何在没有行终止符的情况下快速打印字符数组

防止 Proguard 删除片段的空构造函数