atoi() 実行エラー
以下のプログラムをコンパイル・実行しようとすると、コンパイルはエラーなくできますが、実行すると「プログラムは動作を停止しました」という表示が出て、エラーになってしまいます。
たぶんatoi()が原因だと思うのですが、何が問題なのでしょうか?
それとも環境の問題でしょうか?
どなたかご存知の方がいらしたら教えてもらえないでしょうか。
<環境>
VISTA、VC++
//------ここから----------
#include <stdio.h>
#include <stdlib.h>
#define AAA atoi(argv[1])
#define BBB atoi(argv[2])
#define CCC atoi(argv[3])
#define DDD atoi(argv[4])
#define EEE atoi(argv[5])
#define FFF atoi(argv[6])
#define GGG atoi(argv[7])
int main(int argc, char **argv)
{
FILE *fo;
int i, j, k, l, m, v, cnt1;
int v_tmp = CCC;
int x_cnt;
int y_cnt = 0;
int cnt = 0;
int arr[8190];
if(argc != 9){
printf("引数の数が違います。\n");
printf("使用法:<プログラム名><AAA><BBB><CCC>\n");
printf(" <DDD><EEE><FFF><GGG><出力ファイル名>");
exit(1);
}
if((fo = fopen(argv[8], "w"))==NULL){
printf("can not open file\n");
exit(1);
}
v = v_tmp;
for(l=0; l<AAA; l++){
arr[l] = v;
cnt++;
if(cnt == FFF){
v += DDD;
cnt = 0;
}
}
for(i=0; i<BBB; i++){
m = 1;
cnt1 = 0;
x_cnt = 0;
while(x_cnt < AAA){
fprintf(fo, "%04x", arr[m]);
x_cnt++;
if(!(x_cnt%2))
fprintf(fo, "\n");
cnt1++;
if(cnt1%2){
}else{
m += 3;
}
m -= 1;
}
y_cnt++;
if(y_cnt == GGG){
v_tmp += EEE;
y_cnt = 0;
v = v_tmp;
cnt = 0;
for(l=0; l<AAA; l++){
arr[l] = v;
cnt++;
if(cnt == FFF){
v += DDD;
cnt = 0;
}
}
}
}
fclose(fo);
return 0;
}