文字列群の中からx文字のものを除去or空白文字に置き換える方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
blade

文字列群の中からx文字のものを除去or空白文字に置き換える方法

#1

投稿記事 by blade » 11年前

あるテキストデータがあるとします。例えば以下の様なものなのですが

コード:

zone
v
2
3
@
~
+
2
0
02512150



zero_in
v
2
1
@
2
1
01153007
00297333

この中から各々の行において1文字だけで構成されている行を消したいのですがいい方法はありますでしょうか。
要は

コード:

zone
00332835

zero_in
01153007
00297333
の部分を摘出し、真ん中の余計な1文字だけの行を消したいと考えています。
1文字だけで構成されている行の数、数字群の数はまとまり毎にバラバラで、まとまり毎の1行目にある英単語は1行だけとなっています。

nil
記事: 428
登録日時: 12年前

Re: 文字列群の中からx文字のものを除去or空白文字に置き換える方法

#2

投稿記事 by nil » 11年前

丸投げは禁止です。
改行だけの行はどうするんですか?
単純に考えれば改行文字までを一文字ずつ読み込み、
その文字数をカウントし、それが1ならそこを無視して、
そうでなければ出力でいいかと思います。

blade

Re: 文字列群の中からx文字のものを除去or空白文字に置き換える方法

#3

投稿記事 by blade » 11年前

丸投げしたつもりはなく、アイデアだけいただこうと思ったのですがそう思わせたのであればすみません。

でもご意見ありがとうございます。
おかげでできました。

コード:

#include <string.h>
#include <stdio.h>
#include<stdlib.h>
int main(void)
{
	char onaji[256];
	FILE *fp;
	char  *p;


		if ((fp = fopen("zoom.txt", "r")) == NULL) {
			printf("file open error!!\n");
			exit(EXIT_FAILURE);	/* エラーの場合は通常、異常終了する */
		}
			
			/*    ファイルの読み(書き)*/
			while (fgets(onaji , 256, fp) != NULL) {
		
				p = strtok(onaji, "\n");
				if( (p != NULL &&strlen(p)!=1)||p=="\n" ){
					puts( p );
				}
			
			}
			fclose(fp);	/* ファイルのクローズ */

	return 0;
}


閉鎖

“C言語何でも質問掲示板” へ戻る