こんばんは(^o^)
C言語のファイル操作について聞きたいのですが、
半角スペースを消去するところまではわかったんですけど、
全角スペースも消去するプログラムがわかりません(>_<)
お手数ですが、ご指導のほうよろしくお願いしますm(_ _)m
問題
テキストファイルから空白を削除して、画面に表示するプログラムを
作成しなさい。
自分のプログラム
#include <stdio.h>
#include <stdlib.h>
#define SIZE 15
int main(void)
{
char c;
char finName[SIZE],foutName[SIZE];
FILE *fpin,*fpout;
printf("入力ファイル名>>>");
scanf("%s",finName);
if((fpin=fopen(finName,"r"))==NULL)
{
printf("ファイルが見つかりません。---%s\n",finName);
exit(EXIT_FAILURE);
}
printf("出力ファイル名>>>");
scanf("%s",foutName);
if((fpout=fopen(foutName,"w"))==NULL)
{
fclose(fpin);
printf("ファイルを作成できません。---%s\n",foutName);
exit(EXIT_FAILURE);
}
while(1)
{
c=fgetc(fpin);
if(feof(fpin))
{
break;
}
if(c!=' ')
{
fputc(c,fpout);
}
}
fclose(fpin);
fclose(fpout);
return EXIT_SUCCESS;
}
No.1ベストアンサー
- 回答日時:
★ちょっと泥臭い(スマートでない)ですが・・・。
☆最大レコード長256未満のファイル対象
☆1レコード処理後出力
・(略)
unsigned char cBuf[256], cWork[256];
int k, iLen, nn, iZenK;
・(略)
while( NULL != fgets( cBuf, 255, fp1 ) ){
iLen = strlen( cBuf );
for( nn = 0, k = 0; k < ( iLen - 1 ); k++ ){
if( 0x20 == cBuf[k] ) continue; // 半角空白
if( 0 == isascii( cBuf[k] ) ){
iZenK = 0;
if( 0x81 == cBuf[k] ) iZenK++; // unsigend
if( 0x40 == cBuf[k+1] ) iZenK++;
if( 2 == iZenK ){ // 全角空白
k++;
continue; // cBuf[k] = 0x09;◆
}
}
cWork[nn++] = cBuf[k]; // 格納
cWork[nn ] = 0x00; // 文字列末端処理
}
printf( "%s\n", cWork );
}
注:インデント(◆)に全角空白を用いています。
この回答への補足
yama5140さん
とてもわかりやすいプログラムをありがとうございます(^o^)
また初歩的な質問で申し訳ないのですが…
最後にスペースをすべて消した文字列 cWork をファイルに書き込むには
どうしたらいいのでしょうか?
普通に表示まではうまく行ったのですが、
ファイルに書き込むと何も表示されません。
多分記述が悪いだけと思いますが…
printf("%s",cWork);
fprintf(fpout,"%s",cWork);
yama5140さん
すいませんこちらの手違いでしたm(_ _)m
おかげでうまく動かすことができました(^o^)
本当にありがとうございました!!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語について教えて欲しいです。 ファイルの中身をコピーするプログラムを作ってます aというファイル 7 2022/11/03 19:21
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# 100バイトのバイナリファイルを読み込んで別のファイルに書き込みたいのですが、型をどうすればいいのか 1 2022/11/03 17:11
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
printf による16進表示について
-
C++で指定文字列のカウント方法...
-
C言語のプログラムで、途中で止...
-
#defineが使用するメモリ領域に...
-
リストの作成と出力(C言語)
-
信頼区間の1.96や1.65ってどこ...
-
「Aに対するBの割合」と「Aに対...
-
プログラミング初心者です。 Py...
-
「指定されたキャストは有効で...
-
強連結判定を行うプログラムに...
-
有効数字について 以前質問をし...
-
intとlongは同じ?
-
C言語 エラーの原因がわからな...
-
2÷3などの余りについて
-
if と配列の組み合わせ
-
C言語を実行すると-infが出てき...
-
構文エラー";"が型の前にあり...
-
マイナスからプラスへ転じた時...
-
C言語での引数の省略方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
#defineが使用するメモリ領域に...
-
C言語で複数列のデータを1列の...
-
printf による16進表示について
-
【C言語】全角文字の配列を、全...
-
空白を含んだ文字列がうまく格...
-
char型2つを結合し、short型に...
-
reallocでエラー
-
矢印キーを押下してコンソール...
-
C言語でのCSVファイルの読み出...
-
C++で指定文字列のカウント方法...
-
終了条件Ctrl+zについて,結果表...
-
リストの作成と出力(C言語)
-
ファイル操作で全角空白を消す
-
エラーについて質問です。
-
fscanfの使い方
-
WinInetのInternetOpenUrl関数...
-
C言語のプログラムで、途中で止...
-
構造体メンバの初期化
-
タイムカードのシステムを作り...
おすすめ情報