2012-11-10 134 views
-1

期待帮助...我需要从文本文件读取两个字符串并将它们存储到两个单独的数组中。我搜索了很多代码,其中一个工作,所以我试图修改它以读取两个字符串。这是我的代码:如何从文件中读取两个字符串并将它们存储在两个单独的数组中

int main(){ 
int i = 0; 
int BUFSIZE = 1000; 
char* words[20]; 
char* words2[20]; 
FILE *fp = fopen("input1.txt", "r"); 
FILE *fp2 = fopen("input2.txt", "r"); 
if (fp == 0){ 
    fprintf(stderr, "Error while opening"); 
    return 0; 
} 
words[i] = (char*)malloc(BUFSIZE); 
words2[i] = (char*)malloc(BUFSIZE); 
while (fgets(words[i], BUFSIZE, fp)) { 
    i++; 
    words[i] = (char*)malloc(BUFSIZE); 
} 
while (fgets(words2[i], BUFSIZE, fp2)) { 
    i++; 
    words2[i] = (char*)malloc(BUFSIZE); 
} 
printf("Output: \n"); 
srand(time(NULL)); 
int j = rand()%i; 
int k = (j+1)%i; 
fflush(stdout); 
printf("%d - %s %d -%s", j, words[j], k, words[k]); 

int x; 
for(x = 0; x<i; x++) 
    free(words[x]); 
    free(words2[x]); 
scanf("%d", x); 
fclose(fp); 
fclose(fp2); 
return 0; 
} 

但它不会工作。任何人都知道为什么?谢谢!

+1

啧啧enbrace您免费(x)的代码,我想我我想要的东西存储在一个阵列阵列中,和我想要在该数组中的第二个数组中的东西。 –

回答

2

复位i = 0之前,第二个循环和大括号

int main() 
{ 
    int i = 0; 
    int BUFSIZE = 1000; 
    char* words[20]; 
    char* words2[20]; 
    FILE *fp = fopen("input1.txt", "r"); 
    FILE *fp2 = fopen("input2.txt", "r"); 
    if (fp == 0){ 
     fprintf(stderr, "Error while opening"); 
     return 0; 
    } 
    words[i] = (char*)malloc(BUFSIZE); 
    words2[i] = (char*)malloc(BUFSIZE); 
    while (fgets(words[i], BUFSIZE, fp)) { 
     i++; 
     words[i] = (char*)malloc(BUFSIZE); 
    } 

    // reset i back to zero 
    i = 0; 
    while (fgets(words2[i], BUFSIZE, fp2)) { 
     i++; 
     words2[i] = (char*)malloc(BUFSIZE); 
    } 

    printf("Output: \n"); 
    srand(time(NULL)); 
    int j = rand()%i; 
    int k = (j+1)%i; 
    fflush(stdout); 
    printf("%d - %s %d -%s", j, words[j], k, words[k]); 

    int x; 
    for(x = 0; x<i; x++){ 
     free(words[x]); 
     free(words2[x]); 
    } 
    scanf("%d", x); 
    fclose(fp); 
    fclose(fp2); 
    return 0; 
} 
+0

它完美的作品!谢谢你纠正我的错误! – phil

+0

你也知道如何获得两个数组的长度吗?我试过len + = strlen(string1 [i]);在while循环中,但它返回值1016. – phil

+0

两个数组的长度应该是每个while循环结束时变量'i'的值。 – MeJalgaonkar

0

需要更多信息以了解正在发生的事情。你是否遇到编译错误,运行时信息?你有没有检查文件存在?

而且,几件事情应该是固定的:

  1. 你的第一行应该包含了stdio.h

  2. 添加周围的人的身体支撑你的()来包围两次调用释放。

  3. 你的编译器是否接受你在这个函数中的x声明?如果不是,将其移动到顶部。

+0

1.我的代码实际上包含了这个,很抱歉没有在这里发布。 2.现在添加。它接受,所以......我想这不是问题。事实上,我的程序在编译时会中断,说未处理的异常。无论如何,文本文件都存在。当只定义一个数组时,代码运行良好,但在添加另一个数组后,它会出错。 – phil

相关问题