如何将文本文件中的单词复制到C上的数组中

时间:2014-05-03 17:33:47

标签: c

如何逐字复制到数组中?此代码只打印文本文件的内容(句子)。我需要找到每个单词的长度等。如果我将单词复制到数组中,我可以简单轻松地编辑它们(我是初学者)!

 #include <stdio.h> 
 #include <stdlib.h>  
 int main(int argc, char *argv[]) { 
 FILE *myinput; 
 int count=0; 
 char k;

 myinput = fopen("board.txt", "rt"); 

 while(k!=EOF){
    k = fgetc(myinput);
    printf("%c", k);
        }
 return 0; 
}

2 个答案:

答案 0 :(得分:0)

我认为这应该让你去。

#include<stdio.h>
#include<string.h>
int main()
{
  int n = 1, i = 0;
  char arr[100][10];
  FILE *ptr;
  ptr = fopen("/tmp/test.txt", "r");
  while(n > 0)
    {
      n = fscanf(ptr, "%s",arr[i]);

      i++;
    }
  n = i;
  for(i = 0; i < n - 1; i++)
    printf("%s  length:%d\n",arr[i],(int)strlen(arr[i]));
  return 0;
}

答案 1 :(得分:0)

你可以把整个文件读成一个字符数组,然后做你想做的任何事情:

myinput = fopen("board.txt","rt");
fseek(myinput,0,SEEK_END);
int size = ftell(myinput);
fseek(myinput,0,SEEK_SET);
char* data = malloc(size);
fread(data,size,1,myinput);
fclose(myinput);

例如,以下是如何计算单词中的单词数(用空格分隔):

#define IS_WHITE_SPACE(c) ((c)==' ' || (c)=='\n' || (c)=='\r' || (c)=='\t')

int GetNumOfWords(char* data,int size)
{
    int i;
    int numOfWords = 0;
    int wordStarted = 0;

    for (i=0; i<size; i++)
    {
        if (wordStarted)
        {
            if (IS_WHITE_SPACE(data[i]))
            {
                numOfWords++;
                wordStarted = 0;
            }
        }
        else
        {
            if (!IS_WHITE_SPACE(data[i]))
            {
                wordStarted = 1;
            }
        }
    }
    return numOfWords;
}

当然,这个简单的任务也可以在不事先读取整个文件的情况下实现。

但是,当涉及更复杂的操作时,它应该会让你更容易。

顺便说一句,完成后别忘了free(data) ......