【发布时间】:2012-10-23 20:50:37
【问题描述】:
我正在尝试编写类似于 Linux 命令 wc 的东西来计算任何类型文件中的单词、新行和字节数,而我只能使用 C 函数读取。我已经编写了这段代码,我得到了换行符和字节的正确值,但我没有得到计数字的正确值。
int bytes = 0;
int words = 0;
int newLine = 0;
char buffer[1];
int file = open(myfile,O_RDONLY);
if(file == -1){
printf("can not find :%s\n",myfile);
}
else{
char last = 'c';
while(read(file,buffer,1)==1){
bytes++;
if(buffer[0]==' ' && last!=' ' && last!='\n'){
words++;
}
else if(buffer[0]=='\n'){
newLine++;
if(last!=' ' && last!='\n'){
words++;
}
}
last = buffer[0];
}
printf("%d %d %d %s\n",newLine,words,bytes,myfile);
}
【问题讨论】:
-
与预期输出相比,您的输出是多少?
-
你需要一个'inword'布尔值,当你正在阅读一个单词时它是yes,当你不是时它是no;当它变为“in a word”时,您会增加字数。定义适合自己的词。
-
你知道正则表达式吗?如果是,则搜索
libpcre并在您的程序中使用它以使其可扩展......否则值得花时间了解它们 -
这里是how to count words in a string。您可以根据自己的情况进行调整