2013-10-27 49 views
1

在text.txt文件中,我有一些行,如「蘋果是紅色的。果醬是綠色的。檸檬是黃色的」。我想在新線的第一個字母(克番石榴,升的檸檬是資本),但文件中的輸出是一樣的...如何使文件中的每一個新行的第一個字母成爲大寫C

#include<stdio.h> 
main() 
{ 
    FILE *p; 
    char c; 
    int i; 
    int end_of_line=0; 
    p=fopen("text.txt","r+");//opening file for reading & writing. 

    while(c!=EOF) 
    { 
    c=fgetc(p); 
    if(end_of_line==1) // if it is a new line 
    if (islower(c)!=0) // and if the first letter is small 
     fputc(toupper(c),p); //change the small to capital 
    if(c=='.') 
     end_of_line=1; 
    else 
     end_of_line=0; 
    } 
    fseek(p, 0, SEEK_SET); //setting the file pointer to the start of file 
    while((c=fgetc(p))!=EOF) 
    printf("%c",c); 
    fclose(p); 
} 
+3

開始。 – 2013-10-27 07:11:43

+2

這可能會幫助你http://stackoverflow.com/questions/3474254/how-to-make-a-first-letter-capital-in-c-sharp/3474346#3474346 – shakthydoss

+0

@shakthydoss該鏈接是爲C#。 – this

回答

1

對於開放的更新文件(這些其中包括一個「+」符號),在其上允許輸入和輸出操作,流應該在寫操作之後進行讀操作或讀操作之間刷新(fflush)或重定位(fseek,fsetpos,倒回)沒有達到文件結尾,然後進行寫入操作。

我得到了你的例如通過前和行後使用ftell ANF fseek工作:通過縮進你的代碼

fputc(toupper(c),p); 
+0

你能給我你使用的確切fseek&ftell語句嗎? – srk

+0

'long x = ftell(p)-1; fseek(p,x,SEEK_SET); ... x = ftell(p); fseek(p,x,SEEK_SET);'這只是一個破解,我不知道-1是多麼安全。您應該閱讀文檔以獲得更好的解決方案。 – DrYap

相關問題