2016-10-02 14 views
0

私はこのプログラムを10時間働かせようとしていますが、何か間違っています。なぜプログラムがうまくいかないのかまだ分かりません。私はそれを行う方法を調べるたびに、それは私がやろうとしているものとは異なるバリエーションであり、それを修正しようとすると動作しません。このプログラムは、テキストファイルの文字だけを取り出し、大文字にした5文字のグループで出力することになっています。ありがとうございます。ここで間違っていますか?ありがとうアルファベットのアルファベットを大文字にしてグループ化

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <ctype.h> 

int main(){ 
    FILE * files; 
    char notes[1000]; 
    int charcounter = 0, wordcounter = 0, c; 
    files = fopen("input.txt", "r"); 
    if(!files) 
    { 
     return EXIT_FAILURE; 
    } 
    if(files) 
    { 
     while(fgets(notes, sizeof notes, files) != NULL) 
     { 
      size_t i, n = strlen(notes); 

      for (i = 0; i < n; i++) 
      { 
       if(isalpha(notes[i])) 
       { 
        int c = toupper(notes[i]); 
        putchar(c); 
        if(wordcounter == 50) 
        { 
         printf("\n"); 
         wordcounter = 0; 
        } 

        if(charcounter == 5) 
        { 
         printf(" "); 
         charcounter = 0; 
        } 
        wordcounter++; 
        charcounter++; 
       } 
      } 
     } 
    } 
    fclose(files); 
    system("PAUSE"); 
    return 0; 
} 
+0

また、あなたが2行目以降の開始時に余分なスペースを持っていないwordcountercharcounterをチェックhttp://stackoverflow.com/a/39802458/971127 – BLUEPIXY

答えて

1

カウンターの値を増やす前に確認しています。このため、カウンタは最初のワードで0から開始しますが、その後の各ワードでは1で開始します。最初の言葉では、5文字ではなく6文字をキャプチャしています。

制限チェックの前にまずインクリメントを行います。

wordcounter++; 
charcounter++; 
if(charcounter == 5) 
{ 
    printf(" "); 
    charcounter = 0; 
} 
if(wordcounter == 50) 
{ 
    printf("\n"); 
    wordcounter = 0; 
} 

入力ファイル:

I am trying to see whether or not this works correctly this quick brown fox 
jumps over the lazy dog. Hold it now, hold it now, hold it now, HIT IT!! 

出力:

IAMTR YINGT OSEEW HETHE RORNO TTHIS WORKS CORRE CTLYT HISQU 
ICKBR OWNFO XJUMP SOVER THELA ZYDOG HOLDI TNOWH OLDIT NOWHO 
LDITN OWHIT IT 
+0

私がプログラムを実行すると、画面がポップアップして本当に速く閉じます。出力が得られず、システム(「一時停止」)してもth e screen pause ..プログラムに何かを加えて、別の方法で動作させましたか? – Submersed24

+0

@ Submersed24--システム( "PAUSE")を 'getchar()'に置き換え、Enterキーを押すまで出力が見えるようにする必要があります。 –

関連する問題