コマンドライン引数を数値に変換するcプログラムを作成しました。今、私はそれらの数値を配列に格納したい。問題は、アレイ内の要素をプリントアウトするときに何か変わったことが起こることです。配列は、6番目の要素から印刷されます。ここでC配列は4番目の要素の後で読み始めます
は私のコードです:
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
あなたの配列が印刷されご覧のよう配列の6番目の要素から始まり、なぜそれがそれをしているのか理解することができます。余分なゼロは、配列が実際には存在しない配列内の要素を出力しているためです。ほとんどの場合、印刷に必要な要素の数を見つけるために使用されるarrCountが乱されていることがわかります。 私はこれをずっとあまりにも長く見てきましたが、最も明らかにそうであるにもかかわらず、何が間違っているのか分かりません。
'arrList [j] = num; arrCount ++;' - > 'arrList [arrCount ++] = num;'? – BLUEPIXY
あなたのコードは、すべての単語が最後のものを上書きするので、おそらくarrList [j]に書き込むのではなく、1つの単語を引数として扱う方法しか知りません。arrList [arrCount] – areller