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

标签 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);

}

最佳答案

您可以按如下方式修改您的程序。这对我有用。请为 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);

}

关于c - 将字符串文件读取到字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33453370/

相关文章:

c++ - 就 size_t 而言, "size of the largest possible object on the target platform"是什么

c - 十进制数转换为 16 位二进制 (C)

c - 在 C 中使用 do while 循环时遇到问题

jquery - 我需要从 'Datatables plugin for jQuery' 表的 JSON 数据创建一个二维数组

regex - 如何在正则表达式中添加用户定义的字符串

c - STRB 有效,除非目标地址发生移位

javascript 使用键值对动态创建数组

php - MySQL 获取数组添加重复值?

string - Matlab引用元胞数组中的部分字符串

java - JRuby 数组到 Java 数组