前提・実現したいこと
勉強のためにC言語でプログラミングしております。
7桁の数字が10000000件入っているテキストファイルを読み込み、
ソートして別ファイルに出力するプログラムを作っておりますが、
出力ファイル名の末尾に、読み込んだファイル名も追記されています。
原因、解決策を教えていただきたいです。
入力テキストファイル作成プログラムと、
ソートして別ファイルに出力するプログラムを添付します。
そのままコンパイルして実行できると思います。
発生している問題・エラーメッセージ
出力ファイル名が「sort1.txtinputData.txt」となる 出力ファイル名を「sort1.txt」としたい
該当のソースコード
c
1/* 入力テキストファイル作成プログラム*/ 2#include <stdio.h> 3#include <time.h> 4#include <stdlib.h> 5 6int main() { 7 // ファイル作成 8 FILE *fp; 9 char fileName[13] = "inputData.txt"; 10 fp = fopen(fileName , "w"); 11 if (fp == NULL) { 12 printf("ファイルが開けませんでした"); 13 exit (1); 14 } 15 // データ書き込み 16 srand((unsigned)time(NULL)); 17 for(int i = 0; i < 10000000; i++) { 18 fprintf(fp,"%07d\n", (rand() % 10000000)); 19 } 20 21 // ファイルクローズ 22 fclose(fp); 23 return 0; 24}
c
1/* 入力テキストファイルソート、ファイル出力プログラム*/ 2#include <stdio.h> 3#include <time.h> 4#include <stdlib.h> 5 6/* ソート関数 */ 7int sort( const void * a , const void * b ) { 8 9 if( *( int * )a < *( int * )b ) { 10 return -1; 11 } 12 else if( *( int * )a == *( int * )b ) { 13 return 0; 14 } 15 return 1; 16} 17 18int main() { 19 20 int *inputData = (int *)malloc(4 * 10000000); 21 if (inputData == 0) { 22 fprintf(stderr, "メモリ確保エラー\n"); 23 exit(1); 24 } 25 26 // ファイル読み込み 27 FILE *inputFp; 28 char inputFileName[13] = "inputData.txt"; 29 inputFp = fopen(inputFileName , "r"); 30 if (inputFp == NULL) { 31 printf("ファイルが開けませんでした"); 32 exit (1); 33 } 34 // データ読み込み 35 for(int i=0; i<10000000; i++){ 36 fscanf(inputFp, "%d", &(inputData[i]) ); /* 1行読む */ 37 } 38 // 読み込みファイルクローズ 39 fclose(inputFp); 40 41 // データソート 42 qsort(inputData, 10000000, sizeof(int), sort); 43 44 // 書き込みファイル作成 45 FILE *outputFp; 46 char outputFileName[9] = "sort1.txt"; 47 48 // sort1.txtinputData.txtと表示される 49 printf("%s\n", outputFileName); 50 51 outputFp = fopen(outputFileName , "w"); 52 if (outputFp == NULL) { 53 printf("ファイルが開けませんでした"); 54 exit (1); 55 } 56 // データ書き込み 57 for(int i = 0; i < 10000000; i++) { 58 fprintf(outputFp,"%07d\n", inputData[i]); 59 } 60 // 書き込みファイルクローズ 61 fclose(outputFp); 62 return 0; 63 free(inputData); 64}
試したこと
googleで検索しましたが、わかりませんでした。
補足情報(FW/ツールのバージョンなど)
Linux
vscode
gccコンパイル
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/26 05:54