0
我有一个带整数的文件。我想在缓冲区中写入这些整数作为字符(它的ASCII码)。因为它是一个更大的项目的一部分,请不要张贴不同,但请帮助我。我特别需要的是将char存储在char *类型的缓冲区中。读取int并将其存储在C中的char *缓冲区中C
这些是我的声明。
FILE *in;
long io_len = 1000;
char * buffer;
in=fopen("input.txt","a+");
buffer = malloc(io_len * sizeof(*buffer));
if(buffer == NULL){
perror("malloc");
exit(EXIT_FAILURE);
}
我想出了2个解决方案。
如果我写这一个:
read_ret = read(in, buffer, io_len);
从文件中,io_len字节,并将其存储在缓冲区中读取。但它读取字符。因此,举例来说,如果我写的123将会写入缓冲区1,2,3不与ASCII数字字符123
所以我这样做:因为我想它读取整数
while((fscanf(in,"%d", &i))==1){
printf(": %d\n", i);
}
。现在我对如何将它们作为字符存储在缓冲区中感到困惑。我已经尝试过,但它给我一个分段错误。
while((fscanf(in,"%d", &i))==1){
printf(": %d\n", i);
buffer=(char) i;
printf("Character in Buffer:%s\n",buffer);
buffer++;
}
有想法,后来在我的文件,我写我的缓冲别的地方,所以不管我会做我想做的指针是在我的字符数组的开始(如果这是有道理的,我说的话)
为什么你需要的空间,1.8兆存储的整数? –
我不会只读取一个整数。不要看现在的大小,它是一个通用的权利。我的项目只有在我输入ascii数字作为输入时才有效,并且我想改变它以便给出它的整数等值。而不是写0,写下48等等。 – ghostrider
对不起,但你对自己所追求的事情的澄清对我来说根本不清楚。您可能也需要查看您的文件打开模式; ''a +“'不是我期望读取文件的。当然,你也应该检查'fopen()'是否成功。但是文件中将会发生什么?也许你以后是'fread()';除非使用'fileno(in)'作为文件描述符参数,否则它肯定不是'read()'。根据文件中的内容,'fscanf()'可能会或可能不会有用。 –