【问题标题】:fprintf prints to file a garbage value in the middle of the correct outputfprintf 打印以在正确输出的中间归档一个垃圾值
【发布时间】:2019-12-23 03:31:21
【问题描述】:

文件的输出不同于控制台的输出。 在控制台中,我得到了想要的值: ************* 行:100 *!***** ***************

*************** 行:101 *!%%%** ***************

*************** 行:102 **%**** ***************

在文件中:


100 *!*****/
101 *!%%-1077887800*
102 **%-1077887800***

它似乎是一个垃圾值。

int PrintToFile(FILE *F, char J[mem_Cell])
{
    char *Line;
    char *Line_Num;
    int Num_Length;
    int i=0;
    int j=0;
    int Line_C=code_line;
    Line_Num = (char *)(malloc(sizeof(char)*NUMSIZE));

    Line = (char *)(malloc(sizeof(char)*(NUMSIZE+(mem_Cell/2)+1+1)));

    Line_Num =NumToString( &Line_C);
    Line_Num = String_Reverser(Line_Num, 0);

    Num_Length = strlen(Line_Num);
    for(;i<Num_Length; i++){
        Line[i]=Line_Num[i];
    }

    Line[i]='\t';
    i++;
    for (j=0; j < mem_Cell/2; j++)
    {
        Line[i]= J[j];
        i++;
    }
    printf("\n*************** Line: %s  ***************\n", Line);
    Line[i]='\0';
    fprintf(F, Line);
    fprintf(F, "\n");
    code_line++;
    return  True;
}

【问题讨论】:

  • 1. assignmentLine[i]='\0' 放错了位置。 2.调用fprintf(F, Line)是危险的,如果Line可能包含%符号。
  • 是的,我该如何修复它,我需要将 % 放在我的文件中
  • 使用“%%”(2%)打印出一个。格式化例程将“%%”解释为“输出 %”。
  • @Frankie_C 不!他只需要将fprintf(F, Line) 更改为fprintf(F, "%s", Line)。 (或者可能是fputs(Line, F)。)
  • 但总而言之,你在这里做的工作比你需要的要多。我认为你的整个PrintToFile 函数归结为fprintf(F, "%d %.*s", code_line, mem_Cell/2, J)

标签: c function printf


【解决方案1】:

谢谢你, 我从@SteveSummit 得到了问题的解决方案: 将fprintf(F, Line) 更改为fprintf(F, "%s", Line)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 2018-09-10
    • 2017-07-21
    • 1970-01-01
    相关资源
    最近更新 更多