gpt4 book ai didi

C数组从第四个元素开始读取

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

我编写了一个将命令行参数转换为数字的 C 程序。现在我希望将这些数字存储在一个数组中。问题是当我打印出数组中的那些元素时,会发生一些奇怪的事情。该数组从第六个元素开始打印。

这是我的代码:

int main(int argc, char *argv[])
{
int i, j, num, randint, arrCount = 0;
int arrList[1000] = {0};

for(i=1; i<argc; ++i)
{
for(j=0; argv[i][j] != '\0'; ++j)
{
if (argv[i][j] >= 'A' && argv[i][j] <= 'Z')
{
num = argv[i][j] - 'A';
//arrList[j] = num;
}
else if (argv[i][j] >= 'a' && argv[i][j] <= 'z')
{
num = argv[i][j] - 'a';
//arrList[j] = num;
}
num = num + '0' - 47;
arrList[j] = num;
arrCount++;
printf("%d ", num);
}
}
printf("\n");

for(i=0; i<arrCount; i++)
{
printf("%d ", arrList[i]);
}
}

我运行测试的命令是:

./encript Hello World

输出:

8 5 12 12 15 23 15 18 12 4 
23 15 18 12 4 0 0 0 0 0

如您所见,数组从数组的第六个元素开始打印,我可以弄清楚为什么要这样做。额外的零是因为数组正在打印该数组中实际上不存在的元素。我能想到的最多的是用于查找需要打印多少元素的 arrCount 搞砸了。我已经看这个太久了,我无法弄清楚这里出了什么问题,尽管它很可能很明显。

最佳答案

你像这样填写arrList:

arrList[j] = num;

但是对于每个命令行参数,j 从 0 重新开始,即 World 的结果会覆盖 Hello 的结果。您应该改为存储到 arrList[arrCount] 中,因为 arrCount 在所有参数中都会增加。

关于C数组从第四个元素开始读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43453408/

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