我希望能够返回从文件中获取的字符串数组。文件的格式如下(第一行是单词数量,每一行都是一个单词)。在函数完成后,主要部分输出了一些奇怪的内容。我想要返回指向字符串数组的指针。请注意,使用打印的代码部分是用来检查我的程序。
以下是分配内存的函数:
char *generisiProstor(int n) {
return (char*)malloc(n*sizeof(char[20]));
}
这是一个从rijeci.txt
获取单词并应返回指向包含这些单词的字符串数组的指针的函数:
char* ucitajRijeci(int n) {
char i;
char *rijeci;
static const char filename[] = "rijeci.txt";
FILE *file;
file = fopen(filename, "r");
if (file != NULL)
{
char line[20];
int n;
fscanf(file, "%d", &n);
rijeci = generisiProstor(n);
if (rijeci == NULL) {
return NULL;
}
int i = -1;
fgets(line, 20, file); //skipping first line witch is integer and not needed
while (fgets(line, 20, file) != NULL)
{
printf("%s\n", line); //normal output
i++;
strcpy(rijeci + i, line);
printf("%s\n", rijeci + i); //normal expected output
}
for (i = 0; i < n; i++) {
printf("%s\n", rijeci + i); //wrong output
}
}
return rijeci;
}
主要
int main()
{
static const char filename[] = "rijeci.txt";
FILE *file;
file = fopen(filename, "r");
char *rijeci;
int i;
if (file != NULL)
{
char line[20];
int n;
fscanf(file, "%d", &n);
rijeci = ucitajRijeci(n);
printf("Here is the array: ");
for (i = 0; i < n; i++) {
printf("%s ", rijeci+i); //wrong output
}
}
return 0;
}