2011-06-05 103 views
0

我正在處理文件io函數,任何一個可以解釋我使用&工作的語句2,在下面的代碼中,這裏我想輸入字符串,&然後想寫它在磁盤上.....關於文件io函數IN C

#include<stdio.h> 
#include<sttring.h> 
int main() 
{ 
    FILE *fp; 
    char s[80]; 
    fp=fopen("noname00.cpp","w"); 
    while(strlen(gets(s))>0) /*parenthesis now at correct place*/ /*purpose of this statement */ 
    { 
     fputs(s,fp); 
     fputs("\n",fp); 
    } 
    fclose(fp); 
    return 0; 
} 

簡單,但點的幫助,將不勝感激。

+3

你從哪裏得到這段代碼?它甚至不應該編譯,include指令有一個錯字,並且布爾的「strlen」也是不合法的。 – RedX 2011-06-05 12:00:54

+5

另外,[gets()](http://linux.die.net/man/3/gets)是**危險**,並且已被棄用[現在適用於很多年](http://en.wikipedia.org /維基/獲取)。考慮使用更安全的方法,或者至少回退到'fgets()'。 – 2011-06-05 12:02:44

+3

請勿使用'gets'。它不能安全使用。它已從[下一個語言標準]中移除(http://www.open-std.org/JTC1/sc22/wg14/www/docs/n1548.pdf)。 – pmg 2011-06-05 12:03:36

回答

2

哪一個確切是語句2? char s[80];?它只是聲明和定義了一個大小爲80的字符數組。

如果您的意思是聲明2是while(strlen(gets(s)>0)),它看起來不正確。 strlen()接受一個const char *作爲它的參數,但是您將其指定爲一個整數:gets(s) > 0

另外,不要使用gets()因爲http://c-faq.com/stdio/getsvsfgets.html

而且,獲得的http://en.wikipedia.org/wiki/The_C_Programming_Language和研究的一個副本。

0

該聲明的目的是爲了測試只是一個「返回」擺脫循環。否則,使用可以繼續輸入多行,並向該文件添加多行。如果你真的只想允許一行,那麼可以刪除while {}。