【发布时间】:2014-12-22 03:30:06
【问题描述】:
我完全是 C 语言的菜鸟。我无法在这个函数和 main 之间建立连接。我正在尝试打印出一个二维数组,但我不断收到分段错误。任何帮助将不胜感激。
编辑:当我将最后一行 'printf("%d:[%s]\n",i,*(p+i))' 从 %s 更改为 %c 时,我得到了我正在读取的文件。事实证明,我的函数实际上正在返回一些东西。现在只需要弄清楚如何让它从文件中的其他行返回单词。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define num_strings 20
#define size_strings 20
int *read_file(){
int j = 0;
static char text[num_strings][size_strings];
FILE *fp;
int x;
fp = fopen("dictionary2.txt", "r");
char s[100];
while(!feof(fp)) {
x = fscanf(fp,"%[^\n]",s);
fgetc(fp);
if (x==1) {
strcpy(text[j],s);
j++;
}
}
return text;
}
int main() {
int *p;
p = read_file();
int i;
for(i = 0; i < 10; i++) {
printf("%d:[%s]\n",i,*(p+i));
}
return(0);
}
【问题讨论】:
-
这一定是我见过的最奇怪的 C 代码。
-
;} 看起来像某种表情符号
-
您不能在 C 中返回数组,句号。因为它被声明为
static,所以你能做的最好的就是返回一个合适的指向它的指针。更好的是在main()中声明它,然后将它传递给你的函数,然后完全忘记返回它。检查来自fopen()的返回以防万一失败,并且不要从malloc()转换返回。学会正确地格式化你的代码。 -
我有代码可以检查以防 fopen() 失败。我把它拿出来只是为了在这里发布我关心的内容,即访问这个二维数组。
-
char *s=(char*)malloc(100);:内存泄漏。更改为char s[100];