1樓:滴冰的水
1.不能執行,提示什麼問題?是否有單步除錯?
2.**不全,不好分析;
3.在while中,s++已經改變了s指標的位置,最後 return s存在風險,應該不是你設計的意思;
2樓:741852963一
s++;如果要出問題就是這一句了,我想你的意思是這是一個字元陣列吧,但是你把起始指標都移位了,怎麼保證程式執行的準確性?形參必須s定義為陣列,用i=0;s[i]=c;i++;來表示s++,這樣應該能執行了
3樓:
指標可以正確讀出檔案,但用字元指標作為返回值可能是不行。
c語言,不能讀取檔案中的內容
4樓:金色潛鳥
你要開啟讀的檔案必須已存在,已有正確內容, b 是2進位制檔案噢。
// struct user 已定義
void main()
....
5樓:攬火
一個原因可能是你要開啟的檔案不在同一個盤中,或者把"rb"換成"r"試試,我有時候用"rb"也是不能讀取
6樓:匿名使用者
一個原因可能是你要開啟的檔案不在同一個盤中,也可能是你的盤中沒有預設的include檔案的內容,導致程式不能執行。
如何用c語言讀寫檔案
7樓:大野瘦子
c語言讀寫檔案程式:
#include "stdio.h"
#include
main()
file *fp1;//定義檔案流指標,用於開啟讀取的檔案
file *fp2;//定義檔案流指標,用於開啟寫操作的檔案
char text[1024];//定義一個字串陣列,用於儲存讀取的字元
fp1 = fopen("d:\\a.txt","r");//只讀方式開啟檔案a.txt
fp2 = fopen("d:\\b.txt","w");//寫方式開啟檔案a.txt
while(fgets(text,1024,fp1)!=null)//逐行讀取fp1所指向檔案中的內容到text中
puts(text);//輸出到螢幕
fputs(text,fp2);//將內容寫到fp2所指向檔案中
fclose(fp1);//關閉檔案a.txt,有開啟就要有關閉
fclose(fp2);//關閉檔案b.txt
c語言檔案讀寫操作總結
一.非標準檔案的讀寫 不帶緩衝的
1.檔案的開啟和關閉
open()函式的作用是開啟檔案,其呼叫格式為: int open(char *filename, int access); 該函式表示按access的要求開啟名為filename的檔案,返回值為檔案描述字,其中access有兩部分內容: 基本模式和修飾符, 兩者用" "("或")方式連線,修飾符可以有多個, 但基本模式只能有一個。
access的規定
o_rdonly 只讀
o_wronly 只寫
o_creat 檔案不存在時建立檔案, 屬性按基本模式屬性
o_rdwr 讀寫
o_binary 開啟一個二進位制檔案
o_text 開啟一個文字檔案
open()函式開啟成功, 返回值就是檔案描述字的值(非負值), 否則返回-1。 close()函式的作用是關閉由open()函式開啟的檔案, 其呼叫格式為: int close(int handle); 該函式關閉檔案描述字handle相連的檔案。
2.讀寫函式
int read(int handle, void *buf, int count);
read()函式從handle(檔案描述字)相連的檔案中, 讀取count個位元組放到buf所指的緩衝區中, 返回值為實際所讀位元組數, 返回-1表示出錯。返回0 表示檔案結束。
write()函式的呼叫格式為: int write(int handle, void *buf, int count); write()函式把count個位元組從buf指向的緩衝區寫入與handle相連的檔案中, 返回值為實際寫入的位元組數。
3.隨機定位函式
lseek()函式的呼叫格式為: int lseek(int handle, long offset, int fromwhere);
該函式對與handle相連的檔案位置指標進行定位,功能和用法與fseek()函式相同。 tell()函式的呼叫格式為: long tell(int handle); 該函式返回與handle相連的檔案現生位置指標, 功能和用法與ftell()相同
二、標準檔案的讀寫
1.檔案的開啟函式fopen()
檔案的開啟操作表示將給使用者指定的檔案在記憶體分配一個file結構區,並將該結構的指標返回給使用者程式,以後使用者程式就可用此file指標來實現對指定檔案的存取操作了。
當使用開啟函式時,必須給出檔名、檔案操作方式(讀、寫或讀寫),如果該檔名不存在,就意味著建立(只對寫檔案而言,對讀檔案則出錯),並將檔案指標指向檔案開頭。若已有一個同名檔案存在,則刪除該檔案,若無同名檔案,則建立該檔案,並將檔案指標指向檔案開頭。
fopen(char *filename,char *type);
其中*filename是要開啟檔案的檔名指標,一般用雙引號括起來的檔名錶示,也可使用雙反斜槓隔開的路徑名。
而*type參數列示了對開啟檔案的操作方式。其可採用的操作方式如下:
"r" 開啟,只讀; "w" 開啟,檔案指標指到頭,只寫; "a" 開啟,指向檔案尾,在已存在檔案中追加; "rb" 開啟一個二進位制檔案,只讀; "wb" 開啟一個二進位制檔案,只寫; "ab" 開啟一個二進位制檔案,進行追加 ;
"r+" 以讀/寫方式開啟一個已存在的檔案; "w+" 以讀/寫方式建立一個新的文字檔案 ;"a+" 以讀/寫方式開啟一個檔案檔案進行追加 ;"rb+" 以讀/寫方式開啟一個二進位制檔案; "wb+" 以讀/寫方式建立一個新的二進位制檔案 ;
"ab+" 以讀/寫方式開啟一個二進位制檔案進行追加 ;當用fopen()成功的開啟一個檔案時,該函式將返回一個file指標,如果檔案開啟失敗,將返回一個null指標。
8樓:匿名使用者
可以參考的函式有 fopen, fread, fwrite, fclose
c語言中怎樣判斷檔案是否讀完
9樓:匿名使用者
文字檔案結束符是ctrl+z ,ascii碼是26 現在都很少用到了!
10樓:匿名使用者
while(fscanf(buf,sizeof(buf),fp)!=eof)
11樓:匿名使用者
舉例來說:
file *fp = fopen("dict.txt", "r");
char buf[1024];
if (fp != (file *)null)fclose(fp);}
c語言中無法讀檔案基本問題。求助大神!
12樓:匿名使用者
注意兩個程式開啟檔案的模式不一樣。前者是r,後者是w.
r表示讀檔案,要求檔案必須存在。
w表示寫檔案,如果檔案不存在,程式會自己建立一個檔案。
估計你事先並沒有建立一個asd.txt檔案,所以r當然會失敗。
求助,c語言的檔案讀取問題
13樓:匿名使用者
先給個可以全部讀出來的例子,自己去改改吧:
****************************************===
#include
#include
#include
void myreadfile(void)
14樓:匿名使用者
既然是文字檔案,那麼一行不可能超過80個字元,宣告一個長度為81的char陣列做緩衝區就行了,何必要設動態的可調節大小的陣列呢,純粹是多此一舉。
求助!關於c語言讀檔案的問題!
c語言問題求助,C語言問題求助
include void sort int p1,int p2,int p3 else if p1 p3 else else if p2 p3 if p1 看下函式形參和實參的概念。include main void sort int p1,int p2,int p3 少括號 else 少括號 el...
求助,c語言問題,求助,c語言問題
結果 整個程式的功能其實就是用了三種方式輸出陣列中的6個數 陣列名a可以看成陣列首元素的地址,陣列開闢了一段連續的儲存空間,a i 逐個解引用陣列中的元素 pa a,讓指標pa指向陣列首元素,通過指標的移動輸出陣列中的元素 include int main i,pa for i 0 i 6 i 用陣...
C語言問題求助!c語言問題求助!!
include include void jm long n 加5取餘。for i 0 i k i a i a i 5 10 交換首末位。l a k a k a 0 a 0 l 轉存到m m 0 for i 0 i k i m a i pow 10,k i printf 加密後為 d m void ...