最近发现在学习算法的时候会经常读取文本文件中的单词,自己用C写了实现这个功能的函数,我取名为 getWord(FILE *fp,char *str)。它接受两个参数,第一个参数是要读取文件的文件指针,第二个参数是保存单词的字符指针(要保证其足够大,不会发生溢出 :)。下面是整个函数的源代码:
//从文件中读取单词
int getWord(FILE *fp,char *str)
{
char c;
int counter = 0;
while((c = fgetc(fp)) != EOF){
if( isNull(c) && (counter <= 0)){
//消去非字母字符
continue;
}
else if(isNull(c) && (counter > 0)){
//一个单词读取完毕
break;
}
str[counter++] = c;
}
str[counter] = '\0';
//成功返回SUCCESS 否则返回FAIL
if(counter > 0)
return 1;
else
return 0;
}
我使用的是一个全局的文件指针,这样可以接着上一次读到的地方继续读取。程序的逻辑很简单:
当读取到非字母的时候判断是不是已经读完一个单词了,
如果字符计数器counter大于0就代表单词读取完毕
跳出循环,处理之后再函数返回
如果不大于0就代表还没有读到单词
跳过这个字符(舍弃非字母字符)
大家肯定还注意到了这里有一个函数 isNull(char c)。这个函数用来判断字符c是不是字母,如果是字母则返回0,不是则返回1.函数代码如下:
//过滤与字母无关的所有字符
int isNull(char c)
{
return !(((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')));
}
这就是大笨兔给大家分享的一个C语言函数:从文件中读取单词。当然,由于水平有限程序还存在着一些BUG,如果你有什么好的建议或者想法请与我联系