gpt4 book ai didi

C 中的行数、单词数和字符数

转载 作者:行者123 更新时间:2023-11-30 19:23:22 25 4
gpt4 key购买 nike

下面是我计算行数、单词数和字符数的函数 -

void count(char* file) {

int fd;
long end=0;
char c;
long words=0;
long lines=0;

if((fd=open(file, O_RDONLY))>0){
end=lseek(fd, 0, SEEK_END);
lseek(fd, 0, SEEK_SET);
while(read(fd, &c, 1)==1){
if(c == ' ')
words++;
if(c == '\n') {
lines++;
words++;
}
}

printf("The Number of characters in file is: %ld\n",end);
printf("The Number of lines in file is: %ld\n",lines);
printf("The Number of words in file is: %ld\n",words);

close(fd);
}
else{
printf("Error: ",strerror(errno));
}
}

我对行数和字符数的判断是正确的,但对字数的判断是错误的。如您所见,我正在计算空格数,如果有多个空格,如何计算单词数(我不想使用 f* 函数,例如带文件指针的 fscanf)? wc 命令如何处理这个问题?

最佳答案

为什么不使用strpbrk()标准libc函数?还做一些事情:

    char keys[] = " \n";
...
while( expression ){

ret = read(fd, buf, BUF_LEN - 1);

if (ret == -1)
/*do errno*/
else if ( ret ) {

char* p = buf;
buf[ ret ] = '\0';

while( (p = strpbrk(p, keys)) ) {
if (*p == key[1])
++lines;
++words;
++p;
}
}
else
/* do close file */
}

关于C 中的行数、单词数和字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12483420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com