文字列操作と言うやつは厄介ですね。
------------------------------------------
char strs[STR_MAX];
fgets(strs, STR_MAX, file);
row = atoi(strs);
------------------------------------------
このコードで「charからconst char *に出来ない」とか言われて5分くらい考えた・・・
え、なぜ出来ない・・・ const ってことは初めから文字列が定義されてないといけないのか・・・ などと考えたが・・・。
_row = row = atoi((const char *)strs);
キャストが足りなかった・・・。うん、そうだキャストだ、キャスト(何
そして文字列操作の問題は続き・・・
char型の配列(str)の中身を空にしたいが・・・ NULL文字(str[0] = '';)は使えない・・・。
ネットで調べたら、memset使えって書いてあった。
memset(str, 0, strlen(str));
確かに中身は消えてなくなった。
ところが何度もこの関数使っていたからなのかスタックオーバーフローが起きてしまった。
よく知らない関数なだけに使用を諦めた・・・。
デバッグ中にオーバーフローを追いかけていたら、文字列を空にするヒントがあった。
memset後にstrの中身は全部0が代入されていた。
0代入したらいいのか・・・ 結局はshort型の一個下と言うだけか。
256バイトのintだとか思えば良いのだろう、普通に数値の0を代入したら、文字列でなくなった。
・・・この方法ではエラーが起きないが、正しい方法とも思えない^^;
うーん、まぁ、いっか ←
なんてアグレッシブなプログラム!(゜ ω ゜)