c - 如何在模块化编程中使用结构?

标签 c pointers structure modular

你能在 C 模块化编程中使用结构吗?如果是这样,你该怎么做?我尝试将 p[].ptr 放在函数头中,它在 ']' 之前不断请求和表达式。

typedef struct Words {
   char *ptrletter;
    int numbers;
} Word;
Word *p=(Word*)malloc(sizeof(Word)*lines);
p[nrofline].ptrletter=(char*)malloc(sizeof(char)*(a[nrofline]+1));
strcpy(p[nrofline].ptrletter,"");
p[nrofline].numbers=0;
fillwordnr(f,p[nrofline].ptrletter,p[nrofline].numbers,lines,nrofline,a,c,string[]);

哪里

void fillwordnr(FILE *f, char letters[], int numbers[],  int lines, 
int nrofline, int *a, char c, char string[]){
do {
    c=fgetc(f);
    if ((c>='A' && c<='Z') || (c>='a' && c<='z')){
        string[0] = tolower(c);
        string[1]='\0';
        strcat(letters[nrofline],string);
    }
    else if (c>='0' && c<='9') {
        string[0]=c;
        string[1]='\0';
        numbers[nrofline]=(numbers[nrofline])*10+(c-'0');
    } else if (c == '\n'){
        string[0]='\0';
        strcat(letters[nrofline],string);
        nrofline++;
        if (nrofline<lines){
            letters[nrofline]=(char*)malloc(sizeof(char)*(a[nrofline]+1));
            numbers[nrofline]=0;
            strcpy(letters[nrofline],"");
        }
    }
}while (c!=EOF);
}

*** 好吧,问题是它无法编译?因为它给出了错误 <>

我将 nroflines 放在括号之间,但它仍然给出相同的错误。

最佳答案

嗯,这是一个问题:

fillwordnr(f,p[].ptrletter,p[].numbers,lines,nrofline,a,c,string[]);

您必须指定要使用 p 的哪个元素 - p[0]p[1]p[i] 等。假设 nroflinep 的有效索引,您可以编写

fillwordnr( f, p[nrofline].ptrletter, p[nrofline].numbers, lines, nrofline, a, c, string );

老实说,根据您发布的代码,尚不清楚您要实现的目标。

关于c - 如何在模块化编程中使用结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34755512/

相关文章:

C undefined reference

c - iso_c_binding 使用来自 Fortran 的指针和数组调用 C 例程

c++ - 未声明的结构名称和交换函数在没有通过引用传递的情况下进行交换

r - 组的每个成员都连接到 r 中的中心和所有集群大中心的结构图

gwt - 使用 Maven 将 GWT 源代码整合到 WAR 中的最佳实践

c - C 中动态分配的字符串矩阵

c - 解码C中的函数指针

c - shmget : Operation not permitted

c++ - 检查 NULL 值 C++ 的引用

c++ - 关于取消引用和地址空间的基本 C++ 指针问题