0

我有一个整数文件。我想将这些整数作为字符(它的 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 数组的开头(如果我所说的有意义的话)

4

1 回答 1

2

您的最终代码至少应该警告您将整数分配给 line 中的指针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++;
}
于 2012-06-21T23:10:48.657 回答