C言語でファイルに記載された複数の数値を読み取り、それを昇順にバブルソートさせたいです。
下記は任意の個数の値をファイルから読み取り、バブルソートさせ、処理時間を出力させています。
結果欄に貼り付けているように行いたいことはできているのですが、不明な値も一緒に出力されています。
どなたか原因がわかるかたいらっしゃいましたら、教えてください。
◯ソースコード
#include<stdio.h> #include <time.h> int main(void) { int i, n, j; int sin[30]; int temp=0; clock_t start, end; FILE *fp; fp = fopen("test.txt", "r"); /* 読み込みモードでファイルをオープン */ if(fp == NULL) { printf("ファイルを開くことが出来ませんでした.¥n"); } for(i=0; i<29; i++){ fscanf(fp, "%d", &(sin[i]) ); /* 1行読む,ファイルのデータの並びにあわせる */ } fclose(fp); for(i=0; i<10; i++) { printf("%d¥n", sin[i]); } start = clock(); for(i=0;i<=29;i++) { for(j=29;j>i;j--) { if(sin[j]<sin[j-1]) { temp=sin[j]; sin[j]=sin[j-1]; sin[j-1]=temp; } } printf("%d ",sin[i]); } end = clock(); printf( "処理時間:%lu[ms]¥n", end - start ); return 0; }
◯test.txt
1 3 5 7 9 10 2 4 6 8 11 13 15 17 19 20 12 14 16 18 21 23 25 27 29 30 22 24 26 28
◯結果
1¥n3¥n5¥n7¥n9¥n10¥n2¥n4¥n6¥n8¥n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 32767 処理時間:17[ms]
質問タイトルが適切ではありません。ファイルから値を取得する方法とかになるのでしょうが、今のままだと丸投げ判定されよろしくありません。ある程度は自分で書いてみてわからないところを質問しましょう。
