你能在 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]
等。假设 nrofline
是 p
的有效索引,您可以编写
fillwordnr( f, p[nrofline].ptrletter, p[nrofline].numbers, lines, nrofline, a, c, string );
老实说,根据您发布的代码,尚不清楚您要实现的目标。
关于c - 如何在模块化编程中使用结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34755512/