2013-05-30 41 views
-2

之間添加新的行字符我正在編寫一個程序,它使用getchar()將字符序列作爲輸入並使用fopen()創建pro.cpp源代碼文件, putc()函數。如何在#include <stdio.h>和int main(){}

當我編譯這個源代碼文件創建的這個程序,它會產生錯誤。 如果我從新行開始int main {},則可以解決此錯誤。所以我需要在#include和int main {}之間輸入新的行字符。

我不知道該怎麼做。

#include<stdio.h> 
int main() 
{ 
    FILE *fp; 
    char pgm[100]; 
    char *p_pgm; 

p_pgm=pgm; 

printf("Enter the program as a input"); 

while((*p_pgm=getchar())!=10) 
    p_pgm++; 

*p_pgm ='\0'; 


fp =fopen("e:\\pro.cpp","w"); 
while(*p_pgm!='\0') 
    putc(*p_pgm++,fp); 


fclose(fp); 


} 
+4

有沒有理由不能使用putc('\ n',fp);它的工作原理是 –

+0

。謝謝 – siddstuff

+1

當然,由於'* p_pgm ='\ 0'',底層'while'循環永遠不能執行,因爲'* p_pgm' **是**'\ 0'? – slugonamission

回答

0

當您發現換行符(ascii code 10)時,您停止閱讀字符,然後將其替換爲'\ 0'。所以如果你把它寫到輸出文件中,它顯然不包含任何換行符。輸入源是否由您的程序在不換行的情況下執行?

+0

問題通過添加'\ n'來解決。 – siddstuff

+0

爲什麼選擇投票?如果傳遞給程序的輸入包含換行符('\ n'),則不應手動添加它,因爲getchar也會讀取換行符。但是在你的while循環中,當你找到換行符時,你會停下來。所以你應該指定你的輸入是如何的,是全部在一行上,還是在所有換行符上正確地傳遞它? – user2302436

相關問題