2017-05-30 10 views
0

3行からなるテキストファイルを読み込もうとしています。私は各行を読み込み、行ごとに順列を作成しようとしています。私はEOFを打つまで、これをすべての行に繰り返していきたいと思います。私は私のメインのwhileループ内にfgetsを実装しようとしています。正しい軌道にいるのですか?私が持っている主な問題は、私のメインの順列法にcharを渡すことです。ファイルを1行ずつ読み込んで順列を作成します。

#include <stdio.h> 

void swap(char *x, char *y) 
{ 
    char tempVariable; 

    tempVariable = *x; 
    *x = *y; 
    *y = tempVariable; 
} 

void stringPermutation(char *a, int zeroVariable, int factorial) 
{ 
    int i; 

    if(zeroVariable == factorial) 
    { 
     printf("%s\n", a); 
    } 
    else 
    { 
     for(i = zeroVariable; i <= factorial; i++) 
     { 
      swap((a + zeroVariable), (a + i)); 
      stringPermutation(a, zeroVariable + 1, factorial); 
      swap((a + zeroVariable), (a + i)); 
      } 
     } 
    } 

int main(int argc, char *argv[]) 
    { 
    if(argc != 2) 
    {  
     printf("ERROR - WRONG AMOUNT OF ARGUMENTS\n"); 

    } 
    else 
    { 
     FILE *file = fopen(argv[1], "r"); 
     int x; 

     printf("PERMUTATIONS:\n"); 

     while((x = fgetc(file)) != EOF) 
     { 
      stringPermutation(x, 0, x - 1); //I'm messing up here 
     } 
     fclose(file); 
    } 
    return 0; 
} 
+0

まあ、 'char * 'が期待される場所に' char'を渡しています。あなたのコンパイラは、あなたに言ったはずです... – John3136

+0

int xがcharである必要があるパラメータに渡されていることを理解しています...私の質問は...私はcharをcharに変換するにはどうすればよいですか?キャストする?私は行ごとに読むfgetsを読んできましたが、\ nまたはEOFで停止します。 –

+0

'char x [] =" abc "を試してみてください。 (0、stelen(x)-1); – BLUEPIXY

答えて

0

stringPermutation()は、char*charまたはintではないと予想しています。 charを渡しています。 stringPermutationchar*としてパラメータを使用しているようですので、この場合は呼び出し元が間違っています。

バッファにいくつかの文字を読み込み、バッファをstringPermutation()に渡す必要があるようです。より簡単には、fgetsまたはgetlineなどを使用して、1回の呼び出しで文字列を読み取ることはできません。

+0

私を助ける時間をとってくれてありがとう。あなたが言ったことを試してみると –

0
stringPermutation(x, 0, x - 1); 

xタイプintであり、値としてcharのASCIIコードを取得しますが、機能stringPermutationは、私は、ファイルの行を読み取るためfgetsを使用することをお勧めしchar *a

を期待しています。

+0

私はfgetsを使う必要があるという印象を受けています...ありがとうございます –

関連する問題