繁体   English   中英

没有从C程序获得预期的输出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM