gpt4 book ai didi

c - 在文件中查找不同字符的实例

转载 作者:行者123 更新时间:2023-11-30 15:54:29 25 4
gpt4 key购买 nike

在这个程序中,我想打印出文件中不同字符的实例。输出将包含三个变量:出现次数、字母的十六进制以及字母本身。有人可以帮我弄这个吗?我被困住了!

 Results of program should be something like this:
10 instance of character 0x4s (O)
10 instance of character 0x51 (W)
10 instance of character 0x51 (Y)
2 instances of character 0x65 (a)
18 instances of character 0x67 (c)
16 instances of character 0x81 (d)


//here is my program.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

const char FILE_NAME[] = "input.txt";


int main(argc, *argv[]) {

char temp;
char count[255];

FILE *in_file;
int ch;

fp = fopen(FILE_NAME, "r");
if (in_file == NULL) {
printf("Can not open %s \n", FILE_NAME);
exit(0);
}

while (!feof(fp)) {

ch = fgetc(fp);

if(strchr(count, ch)!= NULL)
{

}

}
printf("%d instance of character (%c)", count);


fclose(in_file);
return (0);
}

最佳答案

这就是您想要的(基于您的代码,以及我的许多评论):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h> // you need this to use isupper() and islower()

const char FILE_NAME[] = "input.txt";

int main(int argc,char *argv[]) {
char temp;
unsigned count[52] = {0}; // An array to store 52 kinds of chars
FILE *fp;
int i;

fp = fopen(FILE_NAME, "r");
if (fp == NULL) {
printf("Can not open %s \n", FILE_NAME);
exit(0);
}

while((temp = fgetc(fp)) != EOF) { // use this to detect eof
if(isupper(temp))
count[26+(temp-'A')]++; // capital letters count stored in 26-51
if(islower(temp))
count[temp-'a']++; // lower letters count stored in 0-25
}
fclose(fp); // When you don't need it anymore, close it immediately.

for(i = 0; i < 26; i++)
if(count[i])
printf("%d instance of character 0x%x (%c)\n", count[i], 'a'+i, 'a'+i);
for(; i < 52; i++)
if(count[i])
printf("%d instance of character 0x%x (%c)\n", count[i], 'A'+i-26, 'A'+i-26);
return (0);
}

关于c - 在文件中查找不同字符的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12950883/

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