該程序只需要一個帶有ASCII行的文件,將其放入鏈接列表堆棧,然後將反轉列表打印到新的文件採用相同的ASCII格式。學習C,並獲得錯誤(我認爲主要是語法,但我正在學習!)
我的結構代碼:
typedef struct Node{
char *info[15];
struct Node *ptr;
};
,我發現了以下錯誤:
Errors:
strrev.c:14: warning: useless storage class specifier in empty declaration
strrev.c: In function ‘main’:
strrev.c:28: error: ‘Node’ undeclared (first use in this function)
strrev.c:28: error: (Each undeclared identifier is reported only once
strrev.c:28: error: for each function it appears in.)
strrev.c:28: error: ‘head’ undeclared (first use in this function)
strrev.c:34: warning: passing argument 1 of ‘strcpy’ from incompatible pointer type
/usr/include/string.h:128:注意:預期「的char * 限制 '但是論點的類型是'char **'
我的主程序:
int main(int argc, char *argv[])
{
if (argc != 3) {
fprintf(stderr, "usage: intrev <input file> <output file>\n");
exit(1);
}
FILE *fp = fopen(argv[1], "r");
assert(fp != NULL);
Node *head = malloc(sizeof(Node));
head->ptr=NULL;
char str[15];
while (fgets(str, 15, fp) != NULL){
struct Node *currNode = malloc(sizeof(Node));
strcpy(currNode->info, str);
currNode->ptr = head;
head=currNode;
}
char *outfile = argv[2];
FILE *outfilestr = fopen(outfile, "w");
assert(fp != NULL);
while (head->ptr != NULL){
fprintf(outfilestr, "%s\n", head->info);
head = head->ptr;
}
fclose(fp);
fclose(outfilestr);
return 0;
}
我認爲很多這些錯誤必須與我的結構,但我不知道我在那裏做錯了什麼... – katiea
提示:專注於第一個錯誤,張貼您的整個代碼在一塊,並非常清楚地告訴我們哪條線有第一個錯誤。 –
既然你還在學習:強烈建議不要使用typedefs,除非你確實需要它們。 Typedefs可能會爲您節省一些鍵入,但生成的代碼更難以閱讀和理解。 – wildplasser