strncpy後のatoiがおかしい
こんにちは。
C++をVS2005でやっています。
atoi関数を使っているんですが、10個の配列strにstrncpyをやると値がおかしくなります。
10個目に'\0'を代入させてやってみても駄目でした。 以下にソースを載せます。
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
int main( void )
{
char string[256];
char str[10];
char *moji = "12345464";
int l;
// using template versions of strcpy_s and strcat_s:
strcpy(string, "6877897898");
strcat(string, "strcpy_s");
strcat(string, "and");
// of course we can supply the size explicitly if we want to:
strcat(string, "strcat_s!");
strncpy(str, string, 10);
l = strtol(str,NULL,10);// 値が違う 6877897898にならない
printf("str = %d\n", l);
l = atoi(moji);
printf("moji = %d\n", l);
l = atoi(string);// 値が違う
printf("string = %d\n", l);
printf("String = %s\n", string);
getchar();
return 0;
}
表示結果
str = 2147483647
moji = 12345464
string = 2147483647
String = 6877897898
mojiは正常に動作しますから、ナル文字が原因なのかと思ってしまいますが。原因がいまいち分かりません。 よろしくお願いします。
お礼
ありがとうございました。 そのままコピーしてつかえましたので、大変参考になりました。