エディタ→TeraPad コンパイラ→MinGW日本語版 の自分のパソコンでプログラムを作成し実行すると上手く行くのですが、同じソースを学校のパソコン(Visual C++6.0)で実行しようとするとエラーが出て上手く実行できません。(OSは双方共にwindows XP)
ちなみに以下のような内容のプログラムです。
データファイルを読み込み、値段ごと(100万未満、100万以上200万未満、200万以上)に分け値段順に表示する。
作ってみたソース↓↓↓
#include<stdio.h> #include<stdlib.h> typedef struct{ char name[20]; int price; int year; int number; int dt1; float dt2; }CAR_DATA; void sort(CAR_DATA data[/url], int n){ //昇順に並べ替え int i, j; CAR_DATA temp; for(i=0; i<n-1; i++){ for(j=i+1; j<n; j++){ if(data.price > data[j].price){ temp = data; data = data[j]; data[j] = temp; } } } for(i=0; i<n; i++) printf("%-15s%10d\n",data.name, data.price); } int main(void){ FILE *fp; char str[256]; CAR_DATA data[100]; CAR_DATA data1[30], data2[30], data3[30]; int i = 0, n; int count1 = 0, count2 = 0, count3 = 0; fp = fopen("car.asc","r"); if( fp == NULL ){ puts( "ファイルが開けません" ); exit(1); } while((fgets(str,256,fp)) != NULL){ // データ終端までの文字列を読み込む // 文字列・各数値データを読み込む sscanf(str, "%s %d %d %d %d %f", &data.name, &data.price, &data.year, &data.number, &data.d1, &data[i].d2); i++; } n = i; // n:データ数 for(i=0; i<n; i++){ // 読み込んだデータをそれぞれの値段閾に分ける if(data[i].price < 1000000){ data1[count1] = data[i]; count1++; }else if((data[i].price >= 1000000) && (data[i].price < 2000000)){ data2[count2] = data[i]; count2++; }else{ data3[count3] = data[i]; count3++; } } printf("100万未満\n"); printf("--------------------------------------------\n"); sort(data1, count1); printf("\n100以上200万未満\n"); printf("--------------------------------------------\n"); sort(data2, count2); printf("\n200万以上\n"); printf("--------------------------------------------\n"); sort(data3, count3); fclose(fp); return 0; }
VCの方でもコンパイルエラーは出ません。
ただ、実行すると"runtime error"(?)のような表示が出て上手く行きません。
上でも申しました通り、自分のパソコンでは問題なく実行できたので何がいけないのか分かりません。
どなたか分かる方がいらっしゃいましたら教えてくださいませ。
よろしくお願いします!!