【发布时间】: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. assignment
Line[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)。