C語言不可不知道的兩個IO

C語言,恐怕最經常用到的是IO,因爲通過輸入輸出才能知道自己的程度是錯還是對,簡單的IO就不說了,這裏講兩個大家可能會用到的但是很少資料說的IO。
第一個:文件讀取
平常寫文件讀取是很麻煩的事情,但是如果可以用scanf()的函數讀取文件就好了,因爲大部分人學C,都是從scanf()開始學起,對scanf()應該很熟悉,這樣,你需要freopen()這個函數,這個函數的功能就是讓你像讀取用戶輸入一樣去讀取文件。先看程序
#include<stdio.h>
main()
{
 char in[20];
 FILE *fp;                              //定義一個文件指針
 fp=freopen("c:\\a.txt","r",stdin);                      //打開文件流
 scanf("%s",in);
 printf("%s",in);
}
這樣子,你就可以像讀取鍵盤輸入一樣去讀取文件流中的東西。說一下參數,freopen()有三個參數,第一個是文件的位置,第二個是文件讀取的方法,"r"書讀取,"w"是寫入,第三個參數是說明這個流是讀取流還是寫入流,stdin就是標準輸入流,stdout就是標準輸出流,這裏程序的 printf("%s",in);語句不是輸出到文件中,因爲打開的輸入流,而不是輸出流,所以printf()語句是輸出到屏幕的。
第二個:scanf()函數讀取空格
scanf("%s",in)語句是讀取到有空格,回車或是tab就會停下來,但是很多時候都還是要吧空格或者tab讀取到字符串中,scanf()還是能做到的,scanf("%[^\n]",&input);注意格式字符串是很特別的"%[^\n]",這個語句能把空格和tab也讀取到字符串中,直到遇到回車。我們改一下上面的程序就可以了。
#include<stdio.h>
main()
{
 char in[20];
 FILE *fp;
 fp=freopen("c:\\a.txt","r",stdin);
 scanf("%[^\n]",&in);
 printf("%s",in);
}
希望這兩個函數可以解決你的文件讀寫問題!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章