2015-12-25 87 views
0

所以我完全是新的編程(我已經學習了3天),我發現自己面前的問題,我根本不知道如何解決。 我希望這個程序能夠給我從0到基數36中的一個特定數字的每一個組合。當數字只有大約50000時,這很容易。但是我的目標是提取真實的單詞(也有數字),如果我試圖獲得5個字符的單詞,終端將開始覆蓋以前的單詞(沒有幫助,我希望所有單詞都有)。 所以我認爲我應該尋找一種方法來將所有內容傳輸到一個txt文件中,並且存在我的問題:我不知道如何...對於長文本抱歉,但我想解釋我正在試圖獲得什麼。謝謝您的幫助。傳輸結果到txt文件C

int main() { 
    int dec, j, i, q, r, k; 
    char val[80]; 
    printf("Enter a decimal number: "); 
    scanf("%d", &dec); 
    for (k = 0; k <= dec; k++) { /*repeat for all possible combinations*/ 
     q = k; 
     for (i = 1; q != 0; i++) { /*convert decimal number to value for base 36*/ 
      r = q % 36; 
      if (r < 10) 
       r = r + 48; 
      else 
       r = r + 55; 
      val[i] = r; 
      q = q/36; 
     } 
     for (j = i - 1; j > 0; j--) { /*print every single value*/ 
      printf("%c", val[j]); 
     } 
     printf(" ");  /*add spaces because why not*/ 
    } 
    return (0); 
} 
+1

如果您使用終端來運行您的應用程序,您可以將輸出重定向到一個文件。例如,如果您的可執行文件命名爲'myexe'而不是運行'myexe'(或'。/ myexe'),請使用'myexe> outfile.txt'(或'./myexe> outfile.txt') – orestisf

回答

0

的實地觀測可能求助:

首先是type相關: 在你的聲明,你創建以下文件:

int dec, j, i, q, r, k; 
char val[80]; 

然後後來又使分配:

val[i] = r;//assigning an int to a char, dangerous 

雖然r是具有-2147483648〜2,147,483,647一個range(典型地)類型int
val[i]char類型的具有一定範圍(通常)只有-128到127.

因此,您可能會遇到溢出,導致意外的結果。 最直接的解決方案是對這兩個變量使用相同的類型。選擇intchar,但不是兩者。

另一個已由@Nasim正確解決。使用file版本printf() - fprintf()。作爲鏈接所示,原型fprintf()是:

int fprintf(FILE *stream, const char *format [, argument ]...); 

用例:

FILE *fp = fopen(".\somefile.txt", "w");//create a pointer to a FILE 
if(fp)//if the FILE was successfully created, write to it... 
{ 
    // some of your previous code... 
    for (j = i - 1; j > 0; j--) 
    { /*print every single value*/ 
      fprintf(fp, "%c", val[j]);//if val is typed as char 
      //OR    
      fprintf(fp, "%d", val[j]);//if val is typed as int 
    } 
    fclose(fp); 
} 

最後,有各種各樣的方法來執行基本轉換。有些more complicatedothers

0

創建一個文件,然後你可以使用fprintf中()代替了printf兩者之間唯一的區別是,你需要指定文件作爲參數

FILE *myFile = fopen("file.txt", "w"); //"w" erase previous content, "a" appends 
If(myFile == NULL) {printf("Error in openning file\n"); exit(1);} 
fprintf(myFile, "some integer : %d\n", myInteger); // same as printf my specify file pointer name in first argument 
fclose(myFile); //dont forget to close the file