掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
C++で書き換えるには・・・? (ID:57888)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
はじめまして。最近c++及びVC++を始めたばかりの初心者ですが よろしくお願いします。 100_赤ワイン___5000 200_白ワイン___1000 300_ロゼワイン_3000 という内容のテキストデータ「data.txt」を1行ずつ読み込み("_"は半角スペースです。) 100_白ワイン___1000 200_ロゼワイン_3000 300_赤ワイン___5000 と並べ替えるPGをCで書いたのですが これをC++で書くように言われチャレンジしてみたのですが 1行ずつ読み込ませる段階でつまずいてしまっています。 アドバイス等いただけたら幸いです。どうぞよろしくお願いします。 Cで書いたソースです。 #include <stdio.h> #include <stdlib.h> /*qsort を使うのに宣言*/ int comp(const void *, const void *); struct DATA1{ char no1 [4]; char name[11]; char no2 [5]; }; union { struct DATA1 DAT; char str[21]; }table[3]; int main(void) { struct DATA1; int i, j; int iNo1[2], iNo2[3]; FILE *fp; if((fp = fopen("TESTDAT.TXT","rt")) == NULL){ printf("File Open Error\n"); exit(1); } for ( i = 0 ; i < 3 ; i++){ fgets(table[i].str,21,fp); table[i].DAT.no1[3] = 0x00; table[i].DAT.name[10] = 0x00; table[i].DAT.no2[4] = 0x00; iNo2[i] = atoi(table[i].DAT.no2); iNo1[i] = atoi(table[i].DAT.no1); } qsort(iNo2, (size_t)3, sizeof(int), comp); for(i = 0, j = 1; i < 3; i++,j++){ switch(j){ case 1: printf("%d %s %d\n", iNo1[i],table[j].DAT.name, iNo2[i]); break; case 2: printf("%d %s %d\n", iNo1[i],table[j].DAT.name, iNo2[i]); break; case 3: printf("%d %s %d\n", iNo1[i],table[j-3].DAT.name, iNo2[i]); } } for( i = 0 ; i < 3 ; i++){ printf("%d %s %d\n", iNo1[i],table[i].DAT.name, iNo2[i]); } fclose(fp); return 0; } int comp(const void *a, const void *b) { return (*(int *)a - *(int *)b); }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.