倒带文件,创建动态结构

用户名

此函数将倒回文件,创建(具有大小的)动态数组,并读取数据,以填充_data结构动态数组。请注意,这次流是按值传递的。然后,该函数返回填充的struct数组

struct _data
{
    char* name;
    long number;
};

struct _data *load(FILE *stream, int size)
{
    struct _data BlackBox = calloc(size, sizeof(_data));

    char tempName[3];

    stream = fopen("names.txt", "r");
    for (int i=0; i<size; i++)
    {
        fscanf(stream, "%s %ld", tempName, &data.number);
        BlackBox[i].name = calloc(strlen(tempName), sizeof(char));
        strcpy(BlackBox[i].name, tempName);
    }
    fclose(stream);

    return &BlackBox;
}

File Content
ron 7774013
jon 7774014

我是一个初学者,在设计代码时遇到困难。有人可以解释一下。谢谢

Ôrel

我认为您会收到gcc的一些警告以帮助您。

使用calloc修复内存管理,并且不返回堆栈指针

typedef struct _data                                                           
{                                                                              
    char* name;                                                                
    long number;                                                               
} _data;                                                                       

_data *load(FILE *stream, int size)                                            
{                                                                              
    _data *BlackBox = calloc(size, sizeof(_data));                             

    char tempName[3];                                                          

    for (int i=0; i<size; i++)                                                 
    {                                                                          
        fscanf(stream, "%s %ld", tempName, &BlackBox[i].number);               
        BlackBox[i].name = strdup(tempName);                                   
    }                                                                          
    fclose(stream);                                                            

    return BlackBox;                                                           
}                                                                              

int main (void)                                                                
{                                                                              
    FILE *f = fopen("test.data", "r");                                         
    _data *data = load(f, 2);                                                  
    printf("%s %ld\n", data[0].name, data[0].number);                          
    printf("%s %ld\n", data[1].name, data[1].number);                          
    return 0;                                                                  
}   

输出

 aurel@vm-pontarlier:~$ ./a.out 
ron 7774013
jon 7774014

考虑变更_data

typedef struct _data{
    char name[256];
    long number;
} _data;

扫描将是:

for (int i=0; i<size; i++)                                                 
{                                                                          
    fscanf(stream, "%s %ld", BlackBox[i].name, &BlackBox[i].number);       
}   

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

动态文件创建(命名)

来自分类Dev

创建动态文件参考

来自分类Dev

动态创建主机文件

来自分类Dev

创建动态文件参考

来自分类Dev

是否可以倒带python StringIO内存文件?

来自分类Dev

动态创建结构数组,无需评估

来自分类Dev

在JavaScript中为结构“ if”创建动态验证

来自分类Dev

如何使用jQuery创建动态树结构

来自分类Dev

在PHP中创建动态数组键结构

来自分类Dev

使用malloc创建动态结构数组

来自分类Dev

如何使用jQuery创建动态树结构

来自分类Dev

动态创建新的维度/层次结构

来自分类Dev

在C中动态创建sembuf结构

来自分类Dev

如何创建这样的动态结构?HTML + PHP

来自分类Dev

如何动态创建 C++ 结构?

来自分类Dev

.htaccess将图像从旧文件夹重定向到新动态创建的文件夹结构

来自分类Dev

PHP创建递归文件结构

来自分类Dev

警告从结构的QList中删除动态创建的结构

来自分类Dev

警告从结构的QList中删除动态创建的结构

来自分类Dev

从文件读取并在动态结构上传输

来自分类Dev

将动态分配的结构写入文件

来自分类Dev

从文件C动态分配结构数组

来自分类Dev

从文件读取并在动态结构上传输

来自分类Dev

创建文件夹/文件结构

来自分类Dev

Python动态创建xml文件

来自分类Dev

代码不适用于倒带动态添加的视频

来自分类Dev

如何使用包结构创建jar文件?

来自分类Dev

juju创建的实例的默认文件层次结构

来自分类Dev

批处理文件以创建目录结构