C 存储文本文件中的每个字符
首先,对不起,我不擅长使用英语 这是我的输出C 存储文本文件中的每个字符,c,string,file,C,String,File,首先,对不起,我不擅长使用英语 这是我的输出 you just read : abcdefg4523 hij you just read : 234kl monp you just read : qrs tuv you just read : wx 452 z This file have 4 alphabets 最后一行计算我的行数 我只想计算字母表,并且我的输出将打印“此文件有26个字母表”(请参见底部的我的文件) 你可以使用并检查一下 如果输入可以是宽字节,则可以改为使用并
you just read : abcdefg4523 hij
you just read : 234kl monp
you just read : qrs tuv
you just read : wx 452 z
This file have 4 alphabets
最后一行计算我的行数
我只想计算字母表,并且我的输出将打印“此文件有26个字母表”(请参见底部的我的文件)
你可以使用并检查一下
如果输入可以是宽字节,则可以改为使用并通过检查 然后,您还必须确保: 或者,如果只想计算所有字符的长度,可以检查高位
if ((c & 0xc0) != 0x80)
...
另一种方法是使用数组收集统计数据,然后计算/检查数据 例如:():
#包括
#包括
无效打印统计信息(无符号整数cc[256])
{
int i;
大小总和=0;
fprintf(标准输出),
“--------------\n”
“统计所有字节:\n”
“--------------\n”
);
对于(i=0;i<256;++i){
总和+=cc[i];
if(cc[i]){
如果(打印(i))
fprintf(标准输出,“%c:%d\n”,i,cc[i]);
其他的
fprintf(标准输出,“0x%02x:%d\n”,i,cc[i]);
}
}
fprintf(标准输出,“总计:%u字节。\n”,总和);
}
无效打印\u统计\u alpha(无符号整数cc[256])
{
int i;
大小总和=0;
fprintf(标准输出),
“--------------\n”
“统计alpha字节:\n”
“--------------\n”
);
对于(i=0;i<256;++i){
if(抄送[i]&&isalpha(i)){
总和+=cc[i];
fprintf(标准输出),
“%c:%d\n”,
(char)i,cc[i]
);
}
}
fprintf(标准输出,“总计:%u个alpha字节。\n”,总和);
}
int main(int argc,char*argv[])
{
文件*fh;
无符号int-cchar[256]={0};
INTC;
如果(argc==1){
fprintf(stderr,“用法:%s\n”,argv[0]);
返回1;
}
如果(!(fh=fopen(argv[1],“r”)){
perror(argv[1]);
返回1;
}
而((c=getc(fh))!=EOF){
++cchar[c];
}
fclose(fh);
打印统计数据(cchar);
打印统计数据α(cchar);
返回0;
}
我明白了@Barbiyong的意思。您希望计算要传递的输入文件中的字母字符数。但是为了实现这个功能,为什么要使用fgets()函数呢?正如函数名本身所说,它将以字符串形式读取输入并输出。还有另一个函数名为fgetc()。请参考下面的代码以了解情况,并进行相应的更改
c=fgetc(pIn);
if isaplpha(c)
{
printf("Encountered alphabet:%c",char(c));
count++;
}
杰出的。一定要给你的服务生小费。儿子,如果你想让别人明白你的意思,你需要提高英语水平。我是南亚人,我会提高我的英语:)你的计划似乎运作良好。它从文件中读入行,打印出来,然后说有多少行。它也应该做些别的事情吗?什么是数组
char字母表[MAX]代码>原因?取消接受的任何特定原因?
int c;
size_t count = 0;
...
c = fgetc(filehandle)
if (isalpha(c))
++count;
setlocale(LC_ALL, "");
if ((c & 0xc0) != 0x80)
...
#include <stdio.h>
#include <ctype.h>
void print_stats(unsigned int cc[256])
{
int i;
size_t sum = 0;
fprintf(stdout,
"----------------\n"
"Stats all bytes:\n"
"----------------\n"
);
for (i = 0; i < 256; ++i) {
sum += cc[i];
if (cc[i]) {
if (isprint(i))
fprintf(stdout, "%c : %d\n", i, cc[i]);
else
fprintf(stdout, "0x%02x: %d\n", i, cc[i]);
}
}
fprintf(stdout, "Total: %u bytes.\n", sum);
}
void print_stats_alpha(unsigned int cc[256])
{
int i;
size_t sum = 0;
fprintf(stdout,
"------------------\n"
"Stats alpha bytes:\n"
"------------------\n"
);
for (i = 0; i < 256; ++i) {
if (cc[i] && isalpha(i)) {
sum += cc[i];
fprintf(stdout,
"%c: %d\n",
(char)i, cc[i]
);
}
}
fprintf(stdout, "Total: %u alpha bytes.\n", sum);
}
int main(int argc, char *argv[])
{
FILE *fh;
unsigned int cchar[256] = {0};
int c;
if (argc == 1) {
fprintf(stderr, "Usage: %s <file>\n", argv[0]);
return 1;
}
if (!(fh = fopen(argv[1], "r"))) {
perror(argv[1]);
return 1;
}
while ((c = getc(fh)) != EOF) {
++cchar[c];
}
fclose(fh);
print_stats(cchar);
print_stats_alpha(cchar);
return 0;
}
c=fgetc(pIn);
if isaplpha(c)
{
printf("Encountered alphabet:%c",char(c));
count++;
}