将字符数组写入C中的文件(给定的方法不起作用)

时间:2015-07-08 13:32:36

标签: c file-io

我正在尝试将字符数组复制到文本文件中,但它拒绝复制。我已经添加了一个要编写的示例文本,它可以使用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);

请帮忙。

4 个答案:

答案 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);