最近发现在学习算法的时候会经常读取文本文件中的单词,自己用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就代表还没有读到单词
跳过这个字符(舍弃非字母字符)

大家肯定还