C语言对文件操作,用fputs函数不能把字符串写入文件? C语言怎么把字符串用fprintf写入文本文件?

C\u8bed\u8a00\u4e2d\u672c\u6765\u8981printf \u51fa\u6765\u7684\u5b57\u7b26\u4e32\u600e\u4e48\u7528fputs()\u51fd\u6570\u5199\u5230\u6587\u4ef6\u4e2d\uff1f

\u4e2a\u4eba\u5efa\u8bae\u4f7f\u7528fprintf,\u8fd9\u4e2a\u51fd\u6570\u7684\u4f7f\u7528\u548cprintf\u4e00\u6837\uff0c\u53ea\u662f\uff0cfprintf\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570\u662f\u6587\u4ef6\u6307\u9488\uff0c\u540e\u9762\u5c31\u5b8c\u5168\u4e00\u6837\u3002

\u628a\u628a\u5b57\u7b26\u4e32\u5199\u5165\u6587\u4ef6\uff0c\u57fa\u672c\u793a\u4f8b\u5982\u4e0b\uff1a

FILE *fp;
char s[]= "hello world\uff01";
char c = '\n';
fp = fopen("file.txt","a");
fprintf(fp,"%s",s); //\u5b57\u7b26\u4e32\u4f7f\u7528%s
fprintf(fp,"%c",c); //\u5b57\u7b26\u4f7f\u7528%cfclose(fp);\u4ece\u6587\u4ef6\u8bfb\u53d6\u5230\u5b57\u7b26\u4e32char s1[30];fp=fopen("file.txt","r");fscanf(fp, "%[^\n]\n", s1);printf("%s\n",s1);fclose(fp); \u672c\u6765\u633a\u7b80\u5355\u7684\u4e00\u4ef6\u4e8b\uff0c\u53ef\u662f\u8ba9\u6211\u5934\u75bc\u4e86\u597d\u51e0\u4e2a\u5c0f\u65f6\u3002


\u5728\u524d\u9762\u5199\u4e86fp = fopen("file.txt","a");
fprintf(fp,"%s",s); //\u5b57\u7b26\u4e32\u4f7f\u7528%s
\u4f46\u662ffclose(fp);\u8fd9\u53e5\u88ab\u6211\u5199\u5728\u4e86return 0;\u4e4b\u524d\uff0c\u7136\u540e\u5b57\u7b26\u4e32\u6b7b\u6d3b\u5199\u4e0d\u8fdb\u6587\u4ef6\u91cc\u9762\u53bb\u3002\u540e\u6765\u7ec8\u4e8e\u53d1\u73b0\u662f\u56e0\u4e3a\u4f7f\u7528\u4e86while\uff081\uff09\u5faa\u73af\u8bfb\u53d6\u7aef\u53e3\u6570\u636e\uff0c\u6240\u4ee5\u4e00\u76f4\u6ca1\u6709\u6267\u884cfclose(fp);\u8fd9\u53e5\uff0c\u624d\u5bfc\u81f4\u6587\u4ef6\u91cc\u9762\u4e00\u76f4\u662f\u7a7a\u7684\u3002\u6240\u4ee5fclose(fp);\u8fd9\u53e5\u8bdd\u4e0d\u8981\u5fd8\u8bb0\u4e86\u54e6~~ \uff1a\uff09

读写一个字符数据

经过前面的学习,我们学习了fread()、fwrite()函数的操作,这两个函数都是对一段“内存块”进行读写操作。那么,C语言还提供了fgetc()、fputc()函数,对文件中的一个字符进行读写操作。这些函数的定义如下:

int fgetc(FILE *stream);

函数说明:从stream文件指针所指向的文件读取1个字符,通过函数的返回值返回。例如:

char c = fgetc(fp);

就是从fp指向的文件,读取1个字符的数据,通过函数返回值,设置给字符变量c。

int fputc(int c, FILE *stream);

函数说明:把参数c表示的字符,写入stream文件指针所指向的文件。例如:

char c = 'M';

fputc(c, fp);

就是把参数c表示的字符变量,写入文件指针fp指向的文件。如下是一个程序测试例子:

可以看到,新建一个test.txt文件,调用fputc()函数,把一个字符写入到文件中。然后,再重新打开文件,读取文件的数据,调用fgetc()函数读取一个字符,得到的数据是刚刚写入的字符。所以,通过这个例子,我们学习了fgetc()、fputc()函数的操作,对文件进行一个字符的读写操作。

3.5 读写一行字符数据

C语言提供了fgets()、fputs()函数对文件进行读写“一行”的数据,字符串以'\n'字符换行,注意,所谓的“一行”数据,它的最后一个有效字符是’\n’,表示换行符号。字符串的结束符,还是以’\0’为结尾,表示字符串结束符。其中fgets()函数的定义如下:

char *fgets(char *buf, int size, FILE *stream);

函数说明:从stream函数指针所指向的文件中,读取size-1个字节到buf缓存,不是读取size个字节,因为,buf[ ]缓存的第size个字节存放字符串结束符,形成一个有效的字符串。

当读取到换行符时,或者到达文件末尾时,结束文件的读取操作。

返回值:读取数据成功,返回存储数据的缓存地址,就是参数buf的地址。如果读取数据失败,返回NULL。例如,读取文件完,没有数据可以再读取,则返回NULL。

int fputs(const char *buf, FILE *stream);

函数说明:把参数buf指针指向的字符串,写入到stream指向的文件。参数buf是一个字符串指针,必须指向一个合法的字符串。合法的字符串是以字符串结束符'\0'结束,表示一个字符串的结尾。

返回值:写入数据成功,返回成功写入的字符个数。失败返回EOF标记。

如下是一个程序测试例子:

程序运行结果如下:

可以看到,程序调用fputs()函数,往打开的test.txt文件写入数据。直接写入一个字符串。然后,关闭文件,再重新打开文件。调用fgets()函数读取数据,读取数据的时候,遇到回车换行的字符'\n',表示一行数据,那么,就返回读取到的一行数据。

在实际的项目开发过程中,fgets()函数非常有用。例如,我们定义一个config.txt文件,里面存放一些系统的配置信息,文件的格式如下:

cat /etc/config.txt

sys_pwd=123456

ApCliAuthMode=WPA2PSK

ApCliEncrypType=AES

ApCliChannel=1

ApCliDefaultKeyID=1

那么,文件的配置信息是一行一行数据,所以,可以用fgets()函数,快速读取出每一行系统配置信息。

  • C璇█瀵规枃浠舵搷浣,鐢╢puts鍑芥暟涓嶈兘鎶婂瓧绗︿覆鍐欏叆鏂囦欢?
    绛旓細C璇█鎻愪緵浜唂gets()銆fputs()鍑芥暟瀵规枃浠杩涜璇诲啓鈥滀竴琛屸濈殑鏁版嵁锛屽瓧绗︿覆浠'\n'瀛楃鎹㈣锛屾敞鎰忥紝鎵璋撶殑鈥滀竴琛屸濇暟鎹紝瀹冪殑鏈鍚庝竴涓湁鏁堝瓧绗︽槸鈥橽n鈥欙紝琛ㄧず鎹㈣绗﹀彿銆傚瓧绗︿覆鐨勭粨鏉熺锛岃繕鏄互鈥橽0鈥欎负缁撳熬锛岃〃绀哄瓧绗︿覆缁撴潫绗︺傚叾涓璮gets()鍑芥暟鐨勫畾涔夊涓嬶細char *fgets(char *buf, int size, FILE *...
  • c璇█鎿嶄綔鏂囨湰鐨勫熀鏈娇鐢ㄦ柟娉
    绛旓細鈥滆捣濮嬬偣鈥濊〃绀轰粠浣曞寮濮嬭绠椾綅绉婚噺锛岃瀹氱殑璧峰鐐规湁涓夌锛鏂囦欢棣栵紝褰撳墠浣嶇疆鍜屾枃浠跺熬銆傚叾琛ㄧず鏂规硶濡備笅琛ㄣc璇█鎿嶄綔鏂囨湰鐨勫熀鏈娇鐢ㄦ柟娉1 璧峰鐐硅〃绀虹鍙锋暟瀛楄〃绀 鏂囦欢棣朣EEK_SET0 褰撳墠浣嶇疆SEEK_CUR1 鏂囦欢鏈熬SEEK_END2 渚嬪锛歠seek(fp,100L,0);鍏舵剰涔夋槸鎶婁綅缃寚閽堢Щ鍒扮鏂囦欢棣100涓瓧鑺傚銆傝繕瑕佽...
  • C璇█鐢wb鏂瑰紡鎵撳紑鏂囦欢,鍙鐢╢puts鍘诲瓨鏁版嵁,浼氬彂鐢熶粈涔?
    绛旓細wb锛 \n锛堟崲琛岀锛変繚鎸佷笉鍙橈紝涓嶈嚜鍔ㄨ浆鎹紝鎵浠鏂囦欢鐨勫ぇ灏忔槸12瀛楃銆傝data.txt銆倃锛 windows浼氬皢浣犱唬鐮佷腑鍐欑殑\n杞垚\r\n锛屾墍浠ヤ緥瀛愪腑鏂囦欢鐨勫ぇ灏忔槸13瀛楃锛坉ata2.txt锛夈
  • C璇█鏂囦欢鎿嶄綔鍑芥暟鎬荤粨
    绛旓細鍑芥暟璇存槑 鍙傛暟path瀛楃涓插寘鍚鎵撳紑鐨勬枃浠惰矾寰勫強鏂囦欢鍚,鍙傛暟mode瀛楃涓插垯浠h〃鐫娴佸舰鎬併俶ode鏈変笅鍒楀嚑绉嶅舰鎬佸瓧绗︿覆:r 鎵撳紑鍙鏂囦欢,璇ユ枃浠跺繀椤诲瓨鍦ㄣ俽+ 鎵撳紑鍙鍐欑殑鏂囦欢,璇ユ枃浠跺繀椤诲瓨鍦ㄣ倃 鎵撳紑鍙啓鏂囦欢,鑻ユ枃浠跺瓨鍦ㄥ垯鏂囦欢闀垮害娓呬负0,鍗宠鏂囦欢鍐呭浼氭秷澶便傝嫢鏂囦欢涓嶅瓨鍦ㄥ垯寤虹珛璇ユ枃浠躲倃+ 鎵撳紑鍙鍐欐枃浠,鑻ユ枃浠跺瓨鍦...
  • C璇█ 鏂囦欢鎿嶄綔,瑕佽鍙栦竴涓猼xt鏂囦欢鍐呭
    绛旓細鍦C璇█涓紝鏂囦欢鎿嶄綔閮芥槸鐢卞簱鍑芥暟鏉ュ畬鎴愮殑銆傝璇诲彇涓涓猼xt鏂囦欢锛岄鍏堣浣跨敤鏂囦欢鎵撳紑鍑芥暟fopen锛堬級銆俧open鍑芥暟鐢ㄦ潵鎵撳紑涓涓枃浠讹紝鍏惰皟鐢ㄧ殑涓鑸舰寮忎负锛 鏂囦欢鎸囬拡鍚=fopen(鏂囦欢鍚锛屼娇鐢ㄦ枃浠鏂瑰紡) 鍏朵腑锛屸滄枃浠舵寚閽堝悕鈥濆繀椤绘槸琚鏄庝负FILE 绫诲瀷鐨勬寚閽堝彉閲忥紝鈥滄枃浠跺悕鈥濇槸琚墦寮鏂囦欢鐨勬枃浠跺悕銆 鈥滀娇鐢ㄦ枃浠舵柟寮...
  • 缁忚繃fputs浼氭妸鍘熸湁鍐呭瑕嗙洊鍚
    绛旓細缁忚繃fputs浼氭妸鍘熸湁鍐呭瑕嗙洊銆傚師鏈夊唴瀹硅繖涓彇鍐充簬fputs鎵撳紑鏂囦欢鏃朵紶鍏ョ殑鍙傛暟濡傛灉浠ヨ拷鍔犳柟寮忔墦寮锛屽氨鏄啓鍒板悗闈紝濡傛灉浠ュ啓鏂瑰紡鎵撳紑锛屽氨鏄鐩栧啓锛屽鏋滄妸鏂囦欢鎸囬拡绉诲姩鍒版湯灏惧啀鍐欏氨鏄啓鍚庨潰銆C璇█涓鐨刦puts浣滅敤锛氳繑鍥炲硷細璇ュ嚱鏁拌繑鍥炰竴涓潪璐熷硷紝濡傛灉鍙戠敓閿欒鍒欒繑鍥 EOF(-1)銆傦紙1锛塻tr锛氳繖鏄竴涓暟缁勶紝鍖呭惈...
  • c璇█涓fgets 銆fputs銆乫read銆乫scanf銆乫seek鐨勫尯鍒拰浣滅敤
    绛旓細fgets()浠鏂囦欢璇诲彇涓涓瓧绗︿覆 fputs()灏嗕竴涓瓧绗︿覆杈撳嚭鍒版枃浠 fread()浠庢枃浠朵互浜岃繘鍒舵柟寮忚鍙栨暟鎹 fscanf()鏄痵canf()鐨勬枃浠剁増鏈 fseek()灏嗘枃浠舵寚閽堝畾浣嶅埌鏂囦欢涓渶瑕佺殑浣嶇疆
  • c璇█涓fgets 銆fputs銆乫read銆乫scanf銆乫seek鐨勫尯鍒拰浣滅敤
    绛旓細fprintf(file stream,const char format[,argument,...]);鍏剁敤娉曞拰printf()鐩稿悓锛屼笉杩囦笉鏄啓鍒版帶鍒跺彴锛岃屾槸鍐欏埌娴佺舰浜嗐傛敞鎰忕殑鏄繑鍥炲间负姝ゆ鎿嶄綔鍐欏叆鍒鏂囦欢鐨勫瓧鑺傛暟銆傚int c = fprintf(fp,"%s s d f",str1,str2,a,b);str1锛10瀛楄妭锛泂tr2锛10瀛楄妭锛沘锛2瀛楄妭锛沚锛8瀛楄妭锛宑涓33锛屽洜涓...
  • 鎬庝箞瀵C璇█涓鐨鏂囦欢杩涜鍐呭娣诲姞,鍒犻櫎,鏌ユ壘鐨鎿嶄綔?
    绛旓細鍦C璇█涓,鏂囦欢鎿嶄綔閮芥槸鐢卞簱鍑芥暟鏉ュ畬鎴愮殑銆傚湪鏈珷鍐呭皢浠嬬粛涓昏鐨勬枃浠舵搷浣滃嚱鏁般 13.3.1 鏂囦欢鐨勬墦寮(fopen鍑芥暟) fopen鍑芥暟鐢ㄦ潵鎵撳紑涓涓枃浠,鍏惰皟鐢ㄧ殑涓鑸舰寮忎负: 鏂囦欢鎸囬拡鍚=fopen(鏂囦欢鍚,浣跨敤鏂囦欢鏂瑰紡); 鍏朵腑, 鈥滄枃浠舵寚閽堝悕鈥濆繀椤绘槸琚鏄庝负FILE 绫诲瀷鐨勬寚閽堝彉閲; 鈥滄枃浠跺悕鈥濇槸琚墦寮鏂囦欢鐨勬枃浠跺悕; 鈥滀娇鐢ㄦ枃浠...
  • 銆C璇█銆戝悜鏂囦欢鍐欏叆涓滆タ涓嶈兘鍐欏叆鎹㈣
    绛旓細C璇█鍐鏂囦欢鏄彲浠ュ啓鍏ユ崲琛岀殑锛屼笉杩囬渶瑕佷娇鐢ㄩ氶厤绗'\n'.璁惧畾鎵撳紑鏂囦欢鐨勬寚閽堜负fp,閭d箞鍚戞枃浠朵腑鍐欏叆鎹㈣鍙互鐢ㄥ涓嬪嚑绉嶅姙娉曪細1 閫氳繃fputc鍑芥暟锛歠putc鍑芥暟鍙互鍐欏叆涓涓瓧绗︼紝鎵浠ュ彲浠ラ氳繃 fputc('\n', fp);鐨勬柟寮忓啓鍏ヤ竴涓崲琛岀銆2 閫氳繃fprintf鍑芥暟锛氬拰閫氳繃鎵撳嵃鍑芥暟printf杈撳嚭涓涓崲琛岀被浼硷紝鍙互 fprintf(fp...
  • 扩展阅读:翻译成中文 ... c语言puts()的用法 ... c++编程 ... c语言putchar怎么输出 ... 中英文自动翻译器 ... 翻译器中英文转换 ... 免费中文文字在线翻译 ... c语言putchar用法 ... 中英文互译翻译器免费版 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网