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