我有一个整数文件。我想在缓冲区中写入那些整数作为字符(它的ascii数字)。因为它是一个更大的项目的一部分,请不要发布不同的,但请帮助我。我特别需要的是将字符存储在char *类型的缓冲区中。
这些是我的声明。
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++;
}
请记住,稍后在我的文件中,我在其他地方编写缓冲区,所以无论我做什么,我都希望指针位于我的char数组的开头(如果我说的是有意义的话)
答案 0 :(得分:2)
您的最终代码至少应该为您提供有关为行buffer=(char) i;
中的指针指定整数的警告。看起来你想取消引用指针。
当你看起来真的只想一次打印一个角色时,你也会打印一个字符串。
您的代码应该如下所示:
int character_index = 0;
while((fscanf(in,"%d", &i))==1){
printf(": %d\n", i);
buffer[character_index]=(char) i;
printf("Character in Buffer:%c\n",buffer[character_index]);
character_index++;
}