我正在尝试将字符数组复制到文本文件中,但它拒绝复制。我已经添加了一个要编写的示例文本,它可以使用wine,所以可能问题在于数组payload[256]
?
(char payload[256]
是我要复制的数组):
printf("new value of payload-----> \n");
for (int x2 = 0; x2 < 256; x2++) //PRINTING THE ARRAY. IT IS FILLED UP
{
printf("%x",payload[x2]);
//if ((x2 + 1) % 16 == 0) printf("\n");
}
getchar();
FILE *fptr= fopen("program.txt", "w");
if (fptr == NULL)
{
printf("Error!");
exit(1);
}
const char*p = payload;
fprintf(fptr, "%s", p); //DOESNT PRINT
fprintf(fptr, "%s", &payload[0]); //DOESNT PRINT
fprintf(fptr, "%s", payload); //DOESNT PRINT
const char *text = "Write this to the file";
fprintf(fptr, "Some text: %s\n", text); //WORKS FINE
int results = fputs(payload, fptr); //DOESNT WORK
fclose(fptr);
请帮忙。
答案 0 :(得分:2)
代替fprintf(fptr, "%s", p);
,试试这个:
for (int x2 = 0; x2 < 256; x2++)
{
fprintf(fptr,"%x",payload[x2]);
}
正如其他人所说,%s用于以NULL结尾的可显示字符串。听起来你没有那个。
答案 1 :(得分:0)
在尝试打印前插入此行:
payload[255] = '\0';
并确保有效负载[]数组中的任何地方都没有'\ 0'。
答案 2 :(得分:0)
您正尝试在文件中打印三个字符串(%S)。有效载荷包含什么?可打印字符?
因此,您需要确保它是可打印的字符并且以null结尾。
答案 3 :(得分:0)
您可能需要的是函数fwrite
。尝试:
int results = fwrite(payload, sizeof(payload), 1, fptr);