0
我写了一个将命令行参数转换为数字的c程序。现在我想要这些数字存储在一个数组中。问题是,当我打印出数组中那些奇怪的元素。数组从第六个元素开始打印。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 [j] = num; arrCount ++;' - >'arrList [arrCount ++] = num;'? – BLUEPIXY
你的代码只知道如何处理一个单词作为参数,因为每个单词都会覆盖最后一个单词,也许不是写入arrList [j],而是写入arrList [arrCount] – areller