gpt4 book ai didi

c - 数组索引减去字符在 C 中意味着什么?

转载 作者:行者123 更新时间:2023-12-02 06:53:44 24 4
gpt4 key购买 nike

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>


int calculate(char *target, char *data)
{
int count = 0;

char letters[26];

for (int i = 0; i < 26; ++i)
{
letters[i] = '\0'; //same as java ''
printf("%d : %c\n", i, letters[i] );
/* code */
}

for (int i = 0; i < target[i]; ++i)
{

letters[target[i] - 'A'] = target[i];
printf("%d : %c\n",i,target[i] );

/* code */
}

for (int i = 0; i < data[i]; ++i)
{
if(letters[data[i] - 'A'])
{
count++;
}
/* code */
}
return count;
}

int main(int argc, char const *argv[])
{
int result;
/* code */
char target[20];
char data[20];
printf("Enter the data\n");
scanf("%s", data);
printf("Enter the target\n");
scanf("%s", target);

result = calculate(target,data);

printf("%d\n",result );

return 0;
}

此示例程序的主要目的是检查数据中的相似词并添加它们的出现次数。例如

Target --> DOG
data --> GOAT

result would be equal to 2 because O & G appears once in data and adding them up gives 2

我的问题是,当它进入第二个和第三个 for 循环时,我几乎不明白 target[i] - 'A' 循环内部发生了什么,除了 targets 索引正在分配给字母

数组索引减去一个字符是什么意思或者这里的目的是什么?

最佳答案

减去 A 会将 A 映射到 0,将 B 映射到 1,等与 ASCII 字符集。

由于数组索引在 C 中是从零开始的,这实际上允许使用大写字母来确定数组元素的索引。

存在一个限制,因为此方法假设字母 AZ 在字符集中是连续的。这个假设对于 ASCII 是正确的,但也有真实的、标准化的字符集,而现实世界的 C 编译器使用这些字符集是不正确的。

关于c - 数组索引减去字符在 C 中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36366168/

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