gpt4 book ai didi

c - C中的字符配对

转载 作者:太空宇宙 更新时间:2023-11-04 02:10:24 25 4
gpt4 key购买 nike

我正在编写一个读取文本文件的代码,然后计算一对字母出现的实例数。例如,包含“aabbaa”的文本文件

出现的次数是aa =2,ab=1,ba=1

我在想我可以使用这样的二维数组:

char charPair[25][25] =   {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w ','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

但是那只会返回一个字母。

任何帮助将不胜感激!

最佳答案

重要:如果你声明一个 char -array,如果组合出现超过 255 次,条目将溢出,所以我将其更改为 long .

另外请记住,您的二维数组应该对您使用的字母表中的每个字母都有索引。我假设它是 26 个字母(例如只有 ascii 小写字母):

long charPair[26][26];
memset(charPair, 0, 26*26*sizeof(long));
char* reader = yourInput;
char current = *reader-'a';
++reader;
char next = *reader-'a';
while(next!=0) { // assumes \0-terminated
charPair[current][next] += 1;
current = next;
next = *reader-'a';
++reader;
}

-'a'这样字母 a 的行/列为 0,z 的行/列为 26。

编辑:关于您对如何最好地读取输入的评论:上面的代码假定整个输入都放入一个字符串中(\0 终止)

FILE* f = fopen(filename, "rb"); // (todo: add your error handling if 0 returned)
fseek(f, 0, SEEK_END);
int len = ftell(f);
fseek(f, 0, SEEK_SET);
char* yourInput = malloc(len+1); // (todo: add your error handling if 0 returned)
fread(yourInput, 1, len, f); // (todo: add your error handling if <len returned)
yourInput[len] = '\0';
fclose(f);

关于c - C中的字符配对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14902433/

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