c - 为什么我的编辑器无法识别我的 typedef 结构? C

标签 c arrays struct structure typedef

新问题:我必须将文件中的数据读入结构数组,并且我的 scanf 函数出现错误。我真的不确定扫描结构的细节。这是我写的:

#include <stdio.h>
#include <string.h>
#include <math.h>

#define runnum 500
#define charnum 20

typedef struct {
        unsigned long bibnum;
        char lastname[charnum];
        char fistname[charnum];
        int grade;
        char team[charnum];
        char state[charnum];
        int time1;
        float time2;
    } runner_t;

int main(void)
{
    int i;
    FILE *ifile, *jfile;

    ifile = fopen("20121006.boys.txt", "r");
    jfile = fopen("20121006.girls.txt", "r");

    runner_t runarray[runnum]; 

    i = 0;

    while  (i < runnum)
        {
            scanf(ifile, "%ul", &runarray[i].bibnum);
            scanf(ifile, "%s", &runarray[i].lastname);
            scanf(ifile, "%s", &runarray[i].firstname);
            scanf(ifile, "%d", &runarray[i].grade);
            scanf(ifile, "%s", &runarray[i].team);
            scanf(ifile, "%s", &runarray[i].state);
            scanf(ifile, "%d", &runarray[i].time1);
            scanf(ifile, "%f", &runarray[i].time2);
        printf("%d %s %s %d %s %s %d:%f", runarray[i].bibnum, runarray[i].lastname, runarray[i].firstname, runarray[i].grade, runarray[i].team, runarray[i].state, runarray[i].time1, runarray[i].time2); 
        i++;
     }

最佳答案

#include <stdio.h>
#include <string.h>
#include <math.h>

#define RUNNUM 500
#define CHARNUM 20

typedef struct {
        unsigned long bibnum;
        char lastname[CHARNUM];
        char firstname[CHARNUM];
        int grade;
        char team[CHARNUM];
        char state[CHARNUM];
        int time1;
        float time2;
    } runner_t;

int main(void)
{
    int i;
    FILE *ifile, *jfile;

    ifile = fopen("20121006.boys.txt", "r");
    jfile = fopen("20121006.girls.txt", "r");

    runner_t runarray[RUNNUM];

    for (i=0; i < RUNNUM; i++)
        {
            fscanf(ifile, "%lu", &runarray[i].bibnum);
            fscanf(ifile, "%s", runarray[i].lastname);
            fscanf(ifile, "%s", runarray[i].firstname);
            fscanf(ifile, "%d", &runarray[i].grade);
            fscanf(ifile, "%s", runarray[i].team);
            fscanf(ifile, "%s", runarray[i].state);
            fscanf(ifile, "%d", &runarray[i].time1);
            fscanf(ifile, "%f", &runarray[i].time2);
        printf("%lu %s %s %d %s %s %d:%f"
        , runarray[i].bibnum
        , runarray[i].lastname, runarray[i].firstname
        , runarray[i].grade, runarray[i].team
        , runarray[i].state
        , runarray[i].time1, runarray[i].time2);

     }
return 0;
}

在此处编译。

关于c - 为什么我的编辑器无法识别我的 typedef 结构? C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19622218/

相关文章:

C 程序 fscanf 跳过行

swift - Swift 中的动态结构创建 - 基于用户输入

C++ memcpy 将结构体转换为字节数组

c - 程序以逆 s 顺序遍历 m*m 矩阵

c - 简单的 C 代码在 HPUX 上运行良好,但在 Linux 上会出现段错误。为什么?

arrays - 如何在 SUMPRODUCT 中使用带有命名范围的 COUNTIF 和另一个过滤器?

java - 整数数组的反向复制

c - gethostbyaddr 在 Windows 上正常,但在 Linux 上返回 NULL

c - 启用 HANDLE_PRAGMA_PACK_WITH_EXPANSION

java - 数组中的数据结构 NullPointerException