2017-03-27 101 views
0

我做了一個簡單的程序,它從命令行讀取輸入,將其保存到文本文件中,然後讀取並打印文本文件。Linux/C:將命令行參數作爲單獨的行寫入文本文件?

所以我一直在試圖修改它,所以不是將參數保存爲一行字符串,而是將每個參數保存爲文本文件中的一行。

我的代碼:

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
FILE *filePointer; 
filePointer= fopen("number.txt","w"); 

if(argc == 1) 
{ 
    printf("give at least one number!\n"); 
} 

for(int i = 1; i < argc; i++) 
{ 
    fprintf(filePointer, argv[i]); 
} 
fclose(filePointer); 

char readBuffer[100] = " "; 

filePointer= fopen("number.txt","r"); 
while(fgets(readBuffer,sizeof(readBuffer),filePointer)) 
{ 
    printf("\nNumber: %s\n", readBuffer); 
} 
fclose(filePointer); 
} 

所以用兩個參數調用程序時:./code 12345678 9101213

,而不是這樣的:

number: 12345678910111213 

我會得到這樣的:

number: 12345678 
number: 910111213 
+1

'fprintf'的第二個參數是一個*格式字符串。*調用'./code'%s%s%s%s''很可能會導致程序崩潰。 –

+0

邢的建議實際上奏效了! 所以簡單修復:)我仍然有很多要了解C語法。 – Jared

回答

0

在將文件保存到文件中時,應該將「\ n」添加到argv [i]。例如:

for(i = 1; i < argc; i++) 
{ 
    fprintf(filePointer, "%s\n", argv[i]); 
} 
相關問題