在C中将字符数组转换为值并放入int数组
我试图将字符串数组的位置作为int数组的参数传递,而间接寻址无效是一个错误。我想统计一下我捕获的口袋妖怪的频率,它们是随机生成和捕获的。我做了相当多的研究,但仍然不能理解它的概念。另外,我的讲师教授的是过时的C语言版本,所以请注意printf(S)在C中将字符数组转换为值并放入int数组,c,arrays,C,Arrays,我试图将字符串数组的位置作为int数组的参数传递,而间接寻址无效是一个错误。我想统计一下我捕获的口袋妖怪的频率,它们是随机生成和捕获的。我做了相当多的研究,但仍然不能理解它的概念。另外,我的讲师教授的是过时的C语言版本,所以请注意printf(S) int遭遇(){ //口袋妖怪名单 char pokemon[5][10]={“Magikarp”、“Zubat”、“Eevee”、“Magmar”、“Pikachu”}; int类型[5]={0,0,0,0}; int i; int a=0; //
int遭遇(){
//口袋妖怪名单
char pokemon[5][10]={“Magikarp”、“Zubat”、“Eevee”、“Magmar”、“Pikachu”};
int类型[5]={0,0,0,0};
int i;
int a=0;
//从0到4的随机数生成器
srand(时间(空));
i=(rand()%5);
//打印出口袋妖怪的名字
printf(“出现了一个野生的%s!\n”,口袋妖怪[i]);
类型[pokemon[i]]+=1;
对于(a=0;a直线:
type[pokemon[i]] += 1;
这是不正确的
pokemon[i]
具有类型char*
;即它是一个指针,不应用于索引type
数组。我想您的意思是用i
索引type
数组。它应该是
type[i] += 1;
另外,打印类型的循环是错误的。它迭代了6次,但是type
数组只有5个元素(0..4
包含在内)。最后,printf
函数希望将格式字符串作为第一个参数(从时间开始它就有),因此它应该是:
for(a = 0; a < 5; a++) {
printf("%d\n", type[a]);
}
(a=0;a<5;a++)的{
printf(“%d\n”,类型[a]);
}
三件事:
使用行type[pokemon[i]]+=1;
尝试传递字符串作为数组的索引。您应该做的是type[i]
for(a=0;a在您的示例中,i
表示生成的pockemon索引。如果它是随机生成的,即它的值为3,则表示称为“Magmar”的pockemon(pockemon[3]
)。类型数组保存捕获的口袋妖怪的数量,因此它必须由pockemon索引本身索引,而不是由没有意义的字符串数组的位置索引
正确的类型[pokemon[i]+=1;
输入[[i]+=1;
“我的讲师教授的是过时的C语言版本,所以请注意打印格式。”这是什么意思?你使用的C语言版本不会那么过时:你使用的是内联注释,直到C99才在标准中出现。间接寻址的问题就在这里输入[pokemon[i]]+ = 1;<代码> >简单地替换代码>代码>类型[i] +=1;< /Code >,因为Pokimon [i]是char数组。你可能在C++中考虑<代码> CUT<代码>使用“代码> Prtff<代码>。为什么在新行之前立即打印一个空格字符?我不知道Pokimon(i1)是指针,谢谢你的解释。
for(a = 0; a < 5; a++) {
printf("%d\n", type[a]);
}