[英]Not getting intended output from a C program
我有一个写入文件的程序。 它具有一个预先生成的格式字符串,然后使用该格式字符串写入文件。
#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"
如果您不希望使用最大长度功能)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.