Linux環境で、ソースを書きましたが、実行すると可笑しくなります。
達人の方々に見ていただきたいのです。
概要:
1. .txt ファイルから、データを読み込み、
サイズを調べ、メモリを確保、
「qsort」で 昇順、降順を出力ファイルに書き出す。
2. 実行すると -ia.txt -oxxx.txt -A
[1] 3234
[2] 3445
[3] 5544
-ia.txt -oxxx.txt -D
[1] 5544
[2] 3445
ソース
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <search.h>
#include <ctype.h>
#include <errno.h>
typedef struct {
fpos_t pos;
int val;
}
Entry;
typedef int (CFP)(const void *, const void *);
void error(const char *msg){
fprintf(stderr, "%s\n", msg);
exit(1);
}
static int cmpstringp(const void *p, const void *b){
return strcmp(* (char * const *) p, * (char * const *) b);
}
int main(int argc,char *argv[])
{
int iflag = 0;
int oflag = 0;
int uflag = 0;
int v , a , dumy ,b , c , i , ln, sz ;
char lines;
char *m ;
char *s;
char *p , *p1 ,*p2 ;
char input_file[64];
char output_file[64];
FILE *fp1, *fp2;
unsigned long siz;
while(( c = getopt (argc, argv, " i:o:AD"))!=-1){
switch (( char ) c ) {
case 'i':
iflag = 1;
strcpy( input_file , optarg );
break;
case 'o':
oflag = 1;
strcpy( output_file , optarg );
break;
case 'A':
uflag = 1;
break;
case 'D':
uflag = 0;
break;
default :
fprintf(stderr, "usage : command[-Z] [keyword]\n");
exit(1);
}
}
printf( "input=%s output=%s uflag=%d\n" , input_file , output_file , uflag );
fp1 = fopen( input_file, "r" );
if( fp1 == NULL ) {
printf( "%sが開けません:%d" , input_file , errno ); return 0;
}
if ( fseek(fp1, 0L, SEEK_END) == -1L) {
printf( "fseek() がエラー:%d" , errno ); return 0;
}
if ( (siz = ftell(fp1)) == -1L) {
printf( "ftell() がエラー:%d" , errno ); return 0;
}
printf ("siz=%d\n" , siz );
m = ( char * ) malloc ( siz * 2 );
if ( m == NULL ){
printf ("メモリが確保できません\n");
return 0;
}
if ( fseek(fp1, 0L, SEEK_SET) == -1L) {
printf( "fseek() がエラー:%d" , errno ); return 0;
}
fp2 = fopen( output_file, "w" );
if( fp2 == NULL ) {
printf( "%sが開けません:%d" , output_file , errno ); return 0;
}
lines = 0;
p = m;
sz = siz;
while( 1 ) {
if( fgets( p , sz, fp1 ) == NULL ) { break; }
ln = strlen( p );
p += ln + 1;
sz -= ( ln + 1 );
++lines;
}
p = m;
for( i=0 ; i<lines ; ++i ) {
sz = strlen( p );
printf( "%d : %s\n" , i , p );
p += sz + 1;
}
for (a = 1; a < 24 ; a++) {
for( v = a + 1 ; v < 25 ; v++ ) {
if ( p[a] < p[v] ) {
dumy = p[a];
p[a] = p[v];
p[v] = dumy;
}
}
}
printf("- - 昇順 - -\n");
for ( a = 1; a < 25 ; a++ ) {
printf ( "[%d] = %d\n\n", a , p[a]);
}
qsort ( p , sz , sizeof( char* ), cmpstringp );
for (a = 1; a < 24 ; a++) {
for( v = a + 1 ; v < 25 ; v++ ) {
if ( p[a] < p[v] ) {
dumy = p[a];
p[a] = p[v];
p[v] = dumy;
}
}
}
printf ("\n\n");
printf("- - 降順 - -\n");
for ( a = 1; a < 25 ; a++ ) {
printf ( "[%d] = %d\n\n", a , p[a]);
}
exit;
fclose (fp1);
fclose (fp2);
return;
}
よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
さしあたり、コンパイルエラーが出ないコードを
載せていただけますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
C言語のプログラムで、途中で止...
-
fread(),fwrite()等について
-
2進数の表示
-
fscanfの使い方
-
2÷3などの余りについて
-
C言語で%を使わない余りの出し方
-
比較回数と交換回数表示について
-
信頼区間の1.96や1.65ってどこ...
-
nCmの関数
-
複数桁10進数の*桁目だけを抽出...
-
Notepad++の関数リスト表示の変...
-
C言語のfor文です。 繰り返しの...
-
break文でループを一気に抜ける...
-
正負を反転させて出力するプロ...
-
#define _CRT_SECURE_NO_WARNIN...
-
error C2143: 構文エラー : ';'...
-
プログラムでの数字につく”f”の...
-
既定のコンストラクタがありま...
-
hit&bolwのプログラミングがで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
C言語で複数列のデータを1列の...
-
#defineが使用するメモリ領域に...
-
printf による16進表示について
-
空白を含んだ文字列がうまく格...
-
C言語のプログラムで、途中で止...
-
プログラミングの授業の課題です
-
char型2つを結合し、short型に...
-
C言語でのCSVファイルの読み出...
-
矢印キーを押下してコンソール...
-
【C言語】全角文字の配列を、全...
-
エラーについて質問です。
-
リストの作成と出力(C言語)
-
バイナリファイル(画像)のよみ...
-
[C]セグメンテーションエラー:...
-
WinInetのInternetOpenUrl関数...
-
VC++でSQLへSELECT文を送ったの...
-
受信データから必要な部分のみ...
-
c言語で文書を読み込み、単語の...
-
reallocでエラー
おすすめ情報