将数据从二进制文件存储到字符串的动态数组中

我有一个二进制文件,我以这种方式将数字存储为字符串:11 43 89 101等

我只想使用系统命令来读取存储的数字并将它们存储在字符串动态数组中,因为我不知道字符串最终将持续多长时间或多少。这是相关代码:

char **positions;
int all_names=0,i,j;

   fd=open(argv[2],O_RDWR|O_CREAT,S_IRWXU);
        i=0;
        j=0;
        do{
            positions=(char**)malloc(sizeof(char*));
            (*positions)[i]=(char*)malloc((MAX_SIZE+1)*sizeof(char));
            do{
                read(fd,positions[i][j],1);
            }while(positions[i][j+1]!='\0');
            i++;
        }while(i<all_names);

        for(i=0; i<all_names; i++){
            for(j=0; positions[i][j]!='\0';j++){
                printf("%c",positions[i][j]);
            }
            printf("\n");
        }
    }

所有名称都跟踪二进制文件中的条目数量。

当我运行它时,我遇到了分段错误。我存储数字的部分工作正常,我已经检查了文件。它总是存储数字及其后的'\0'

我得到这个警告,但不知道如何解决

  

警告:指针转换不兼容的整数,将'char'传递给'void *'类型的参数[-Wint-conversion] read(fd,positions [i] [j],1);

关于positions[i][j]

感谢您的帮助

编辑:将代码更改为:

char **positions;
int all_names=0,j;

positions=(char**)malloc(sizeof(char*));
*positions=(char*)malloc((MAX_SIZE+1)*sizeof(char));

fd=open(argv[2],S_IRWXU);
        i=0;
        j=0;
        for(i=0; i<all_names; i++){
            positions=(char**)realloc(*positions,(all_names) * sizeof(char*));
            positions[i]=(char*)malloc((all_names+1)*sizeof(char));
            for(j=0; ;j++){
                read(fd,&positions[i][j],1);
                if (positions[i][j] == ' ') {
                    break;
                }
            }
        }

        for(i=0; i<all_names; i++){
            printf("%s\n",positions[i]);
        }
    }

现在我在运行时出现错误:

  

malloc: *对象0x20400036的错误:未分配正在重新分配的指针   * 在malloc_error_break中设置一个断点以进行调试   中止陷阱:6

我真的认为我应该每次在代码的较早部分更新all_names值时就重新分配。我在做什么错了?

gary1968 回答:将数据从二进制文件存储到字符串的动态数组中

您需要在读取后而不是之前检查空字节

interface IFileBlob { id: string; file: Blob; } 的第二个参数必须是指向数组元素的指针,请使用export interface IFileResult { id: string; type: string; }

您必须为所有字符串分配内存,只是分配import numpy as np import matplotlib.pyplot as plt formula = "2*x**6 + x**5 -3*x**4 + 7*x**3 + 9*x**2 + x + 6" x = np.arange(1,10) y = eval(formula) plt.plot(x,y) plt.xlabel('X') plt.ylabel('Y') plt.show() 的一个元素。

read()

您还需要将&positions[i][j]设置为文件中的实际字符串数,而不是positions。我不确定你从哪里得到的。

本文链接:https://www.f2er.com/3034570.html

大家都在问