c言語 指定文字数で改行する

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

c言語 指定文字数で改行する

#1

投稿記事 by goma » 9年前

/*--------test.c-------*/

コード:

#include<stdio.h>
#include<stdlib.h>
#define N 256

int main()
{
    FILE *fp;
    char *filename = "test.txt";
    int s,p;
    int i = 0;
    
    //ファイルオープン処理
    if((fp = fopen(filename, "r"))==NULL) {
      fprintf(stderr,"%sのオープンに失敗.\n",filename);
      exit(1);
    }
    
    //以下テキスト整形処理
    
    printf("1行の文字数を指定してください\n");
    scanf("%d", &p);
      
  while((s = fgetc(fp)) != EOF){
    if(s == '\n'){ //読み込んだ文字列が改行文字だった場合はiを初期化
      i=0;
    }
    if(s==' ' && i>p-1){ //読み込んだ文字列が空白文字で、かつ1行が30文字を越している場合
      printf("\n");
      i=0;
    }    
      putchar(s);
      i++;
    }
    printf("\n");
    fclose(fp);
    
    return 0;
}

/*--------test.txt---------*/

コード:

A temple like that of Olympia was surrounded by statues of
victorious athletes dedicated to the gods .

結果としては、
A temple like that of Olympia was
[space]surrounded by statues of
victorious athletes dedicated
[space]to the gods .




こうなってしまいます。
[space]は半角スペースだとお考え下さい。
改行をしたあとにスペースが入ってしまうのが気になります。

改善の仕方が分からないので、お力をお貸しください。。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: c言語 指定文字数で改行する

#2

投稿記事 by みけCAT » 9年前

27~32行目を

コード:

    if(s==' ' && i>p-1){ //読み込んだ文字列が空白文字で、かつ1行がp-1文字を越している場合
      printf("\n");
      i=0;
    } else {
      putchar(s);
      i++;
    }
としてみてください。
インデントも整えたほうがいいでしょう。
最後に編集したユーザー みけCAT on 2014年6月16日(月) 21:42 [ 編集 1 回目 ]
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

初級者
記事: 200
登録日時: 13年前

Re: c言語 指定文字数で改行する

#3

投稿記事 by 初級者 » 9年前

その行の何文字目かをカウントしておき、
先頭かつブランクならば出力しない
というロジックを入れればいいと思います。

goma

Re: c言語 指定文字数で改行する

#4

投稿記事 by goma » 9年前

なんと・・
ちょっとしたことだったのですね・・・。
勉強不足でした。
ありがとうございました!

閉鎖

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