久々に時間かかってる。 | らいとういんぐ

らいとういんぐ

-Light Wings- Ж gameproject

横スクロールしゃぼん玉アクションゲーム 「しゃぼんふぁんたじあ」 制作中

文字列操作と言うやつは厄介ですね。



------------------------------------------



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を代入したら、文字列でなくなった。



・・・この方法ではエラーが起きないが、正しい方法とも思えない^^;





うーん、まぁ、いっか ←





なんてアグレッシブなプログラム!(゜  ω  ゜)