gpt4 book ai didi

c - 未从 C 程序中获得预期输出

转载 作者:行者123 更新时间:2023-11-30 14:46:43 25 4
gpt4 key购买 nike

我有一个写入文件的程序。它有一个预先创建的格式化字符串,然后使用该格式化字符串写入文件。

#include <stdio.h>
#include <stdlib.h>
#include<string.h>

#define LEN_REC_TYPE 5
#define LEN_REC_NO 2
#define LEN_EDI_FILE_ID 5
#define LEN_DATE 8
#define LEN_ST_ARRAY 20



int main()
{
char ps_FHEADstring[LEN_ST_ARRAY];
FILE *pf_edidlord;
pf_edidlord=fopen("TEST.txt","w");
char* ps_vdate = "20120101";

*ps_FHEADstring='\0';
strcat(ps_FHEADstring,"%-*s"); /* record descriptor */
strcat(ps_FHEADstring,"%.*ld"); /* line number */
strcat(ps_FHEADstring,"%-*s"); /* transaction type ind */
strcat(ps_FHEADstring,"%-*s"); /* file create date */
strcat(ps_FHEADstring,"\n");

fprintf(pf_edidlord, ps_FHEADstring,
LEN_REC_TYPE, "FHEAD",
LEN_REC_NO, 1,
LEN_EDI_FILE_ID, "DLORD",
LEN_DATE, ps_vdate);



return 0;
}

在文件中,输出如下所示

FHEAD01DLORD20120101

注意:中间没有“-”,为什么在字符串的开头而不是末尾添加了字符串终止符?有人可以解释一下它是如何工作的吗?

编辑:我打印了ps_FHEADstring,输出格式为%-*s%.*ld%-*s%-*s。它基本上是一个格式化字符串。所以我期待中间的输出有一个“-”。

最佳答案

我认为您误解了格式字符串规则。

%-*s 写入由参数定义的最大长度的字符串。 -是maxlength格式的一部分,并没有说要写-。如果您想要写入特定字符,则它需要位于格式部分之外,例如 "-%-*s""-%*s" 如果您不想要最大长度功能。

关于c - 未从 C 程序中获得预期输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52027666/

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