私は整数に変わっているはるかに長いchar配列を持っていますが、なぜいくつかの点で奇妙な動作をする理由を理解できません。C char配列をintに変える
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char x[60] = "08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08";
printf("%lu\n\n", strlen(x));
for (int i = 0; i < strlen(x); i+=3) {
char num[2];
num[0] = (char)x[i];
num[1] = (char)x[i+1];
printf("%d, ", atoi(num));
}
}
出力:
8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 500, 773, 916, 89,
すべてが素晴らしいですまで..... 500、773、916、89 ...何が起こっているのでしょうか?
'atoi'の引数は文字列でなければなりません。あなたは文字列を入力しませんでした。文字列は、一連の文字の後にnullバイトが続きます。 –
'num [2]'は1文字しか使用できません。もう1つは '\\ 0 'です – CinCout
私のシステムでは完全に動作します。どのバージョンのgccを使用していますか? –