2017-05-30 30 views
0

所以我有問題試圖讀取由三行組成的文本文件。我正在嘗試讀取每行並創建每行排列。我想繼續循環遍歷每一行,直到我點擊EOF。我試圖在我的main中的while循環中實現fgets。我在正確的軌道上嗎?我遇到的主要問題是在我的main中傳遞一個char到我的排列方法。讀取文件 - 逐行創建c排列

#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被傳遞到一個參數,需要是一個字符...我想我的問題是...如何將該int變成一個字符?施展它?我一直在閱讀fgets逐行閱讀,但是,它停在\ n或EOF ..? –

+0

嘗試'char x [] =「abc」; stringPermutation(x,0,stelen(x)-1);' – BLUEPIXY

回答

0

stringPermutation()預計char*不是charint。 您正在通過char。它看起來像stringPermutation也使用該參數作爲char*,所以在這種情況下,調用者是錯誤的。

看起來你需要讀幾個字符到緩衝區和緩衝傳遞給stringPermutation()。更簡單地使用fgetsgetline等在一次調用中讀取一個字符串,而不是通過char自己來構建字符。

+0

感謝您花時間幫助我。我會嘗試你所說的,看看是否有效 –

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

xint類型的,得到的char ASCII代碼值,但功能stringPermutation希望我建議使用fgetschar *a

用於讀取文件的行。

+0

我得到的印象我需要使用fgets ...謝謝 –