c言語で、数値が並んでいるテキストファイルを読み取り、値を昇順に並べて出力したい。
題名の通りですが、c言語で数値が並んでいるテキストファイルを読み込み値を昇順に表示したら、本来テキストファイルの数値は100~10000ぐらいなのに
-になる値や0が大量にでたり10桁を超える大きい値が出力され元の値がわかりません。一応値はめちゃくちゃですが昇順にはなっています。
環境はWin10、atom上でコマンドプロンプトを表示してgccして実行しています。
テキストファイルはメモ帳であつかっています。
発生している問題・エラーメッセージ
テキストファイルの値(一部) 14122 10199 17025 5943 10252 20017 4912 17157 2787 5533 14571 10970 7926 10855 15978 1409 15494 8559 が 出力(一部) -194488364 -194488364 -194488364 -1033 -1033 -998 -987 -976 -976 -973 -25 -4 -2 -2 -1 -1 -1 0 0 0 0 2010813095 2010815277 2010918377 2011078210 2011265568 2011265696 2011265696
該当のソースコード
c
1#include<stdio.h> 2#define N 1000 3 4int main(void){ 5 6 FILE *fp1; 7 FILE *fp2;//使用してない 8 fp1=fopen("./test11.txt","r"); 9 fp2=fopen("./test12.txt","r"); 10 11 int i,j, sort1[N]; 12 int box1[N]; 13 int box2[N]; 14 int temp; 15 16 for(i=0;i<N;i++){ 17 fscanf(fp1,"%d",&box1[N]); 18 } 19 20 for(i=0;i<N;i++) 21 { 22 fscanf(fp2,"%d",&box2[N]); 23 } 24 25 for(i=0;i<N;i++) 26 { 27 for(j=0;j<N;j++) 28 { 29 if(box1[i]<box1[j]) 30 { 31 temp = box1[i]; 32 box1[i] = box1[j]; 33 box1[j] = temp; 34 } 35 } 36 } 37 for(i=0;i<N;i++){ 38 printf("%d \n", box1[i]); 39 } 40 41 42 fclose(fp1); 43 fclose(fp2); 44 45 return 0; 46} 47
試したこと
テキストファイルをの保存形式とatomの表示形式とコマンドプロンプトの表示をそれぞれ、unicode utf-8 ANSI にしてみましたが、何も変わりませんでした。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/23 02:05