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