将字符串文件读取到字符串数组

时间:2015-10-31 15:37:53

标签: c arrays string

我正在尝试将一个文件(完整的单词后跟换行符)读取到一个充满指向每个字符串的指针的数组中。然后打印数组中的每个单词,并计算读取的单词数。然而,它只是打印没有单词,并说导入0个单词。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define ARGS_REQUIRED 2
#define MAX_WORDS 50
#define MAX_WORD_LENGTH 1024

void read_file (char * argv[], char word_storage[]);
void usage (char * argv[]);

int main (int argc, char* argv[])

{
char word_storage[MAX_WORDS];

if (argc == ARGS_REQUIRED)
    {
        system("clear");
        read_file(&argv[1], word_storage);
    }
else 
    {
        usage(&argv[0]);
    }

return 0;

}

void usage (char * argv[])

{
     printf("Incorrect usage, try: ./program_name %s\n", argv[1]);
}

void read_file (char * argv[], char word_storage[])

{

FILE * file_name;
char *word[MAX_WORDS][MAX_WORD_LENGTH]; 
int word_count = 0, i = 0, j;

    if ((file_name = fopen(argv[0], "r")) == NULL)
        {
            printf("Cannot open file ... \n");
        }
    while (fscanf(file_name, "%s", *word[MAX_WORDS]) == 1)
        {
            for (j = 0; j < MAX_WORDS; j++)
                {
                   if (printf("%s\n", *word[j]) == 1)
                    {
                        word_count++;
                    }
                }

        }

fclose(file_name);        
printf("Imported words: %d\n", word_count);

}

1 个答案:

答案 0 :(得分:1)

您可以按照以下方式修改程序。它对我有用。请为printf()功能添加错误检查。

void read_file (char * argv[], char word_storage[])
{

FILE * file_name;
char word[MAX_WORDS][MAX_WORD_LENGTH];
int word_count = 0, i = 0, j;

    if ((file_name = fopen(argv[0], "r")) == NULL)
        {
            printf("Cannot open file ... \n");
        }
    while (fscanf(file_name, "%s", word) == 1)
        {
printf("%s\n",word);
word_count++;
/*
            for (j = 0; j < MAX_WORDS; j++)
                {
                    if (printf("%s\n", word[j]) == 1)
                    {
                        word_count++;
                    }
                }
*/
        }

fclose(file_name);
printf("Imported words: %d\n", word_count);

}
相关问题