導航:首頁 > 文件教程 > c讀取文件到string

c讀取文件到string

發布時間:2024-01-27 13:02:22

① C語言 怎麼用fgets()把一個文件多行內容讀取到一個字元串中

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//返回從filename中讀取第m到n行字元保存到mystring,
//如果打不開文件,失敗返回NULL
//如果不足m行,返回NULL,且mystring為空串
//如果不足n行,返回NULL,mystring為m行之後的所有內容
//如果完成成功,返回mystring,且mystring保存m到n行的字元
char*getfilechar(char*filename,intm,intn,char*mystring){
#defineN2000//假設每行長度不超過2000字元
FILE*fp;
inti;
charstr[N];
*mystring='';
if((fp=fopen(filename,"r"))==NULL){
printf("打開文件%s失敗 ",filename);
returnNULL;
}
for(i=1;i<m;i++)
if(fgets(str,N,fp)==NULL){
printf("文件%s長度不足%d行 ",filename,m);
fclose(fp);
returnNULL;
}

for(i=m;i<=n;i++){
if(fgets(str,N,fp)==NULL){
printf("文件%s長度不足%d行 ",filename,n);
fclose(fp);
returnNULL;
}
strcat(mystring,str);
}
fclose(fp);
returnmystring;
}
intmain(){
charmystring[2000];
getfilechar("d:\temp.txt",20,26,mystring);
if(mystring!=NULL)printf("%s",mystring);
}

② 如何在c語言中使用java傳入的String

如何在c語言中使用java傳入的字元串s,也就是說如何使用jstring類型。那麼在c語言實現中如何使用傳入的字元串s?
我們知道java中的String,c語言中應該對應的是char*類型,也就是說我們在jni的c語言實現中如何把jstring類型轉換成為char*即可。
方法是這樣的:

在c文件中聲明char* str,然後
str= (char*)(*env)->GetStringUTFChars(env, jstring,NULL);
這樣就可以得到傳入的字元串,過程如下:

JNIEXPORT jstring JNICALLJava_Test_sayHello
(JNIEnv * env, jobject obj, jstring s)
{
char * str;
str=(char*)(*env)->GetStringUTFChars(env,s,NULL);
printf("%s",str);
(*env)->ReleaseStringUTFChars(env, s, str);
......
}
當然,java中有垃圾回收機制,二c語言沒有,那麼使用完該字元串之後該如何處理呢?字元串str使用完後,需要通知虛擬機平台相關代碼無需再訪問,方法是
(*env)->ReleaseStringUTFChars(env, jstring, str);

最後還要說一下,如果傳入傳出的字元串是中文,就又有問題了,我們需要手工進行uncode編碼,否則就是亂碼,當然如果程序設計合理,這里一般情況下盡量避免進行漢字的傳遞。
呵呵,就這樣了!

③ C語言提取文件內容保存到字元串數組問題

使用文件操作函數即可。
1、fgets函數:
原型:char
*
fgets(char
*
buf,
int
bufsize,
FILE
*
stream);
功能:從文件結構體指針stream中讀取數據,每次讀取一行;
說明:讀取的數據保存在buf指向的字元數組中,每次最多讀取bufsize-1個字元(第bufsize個字元賦值為\0)。如果該行不足bufsize個字元,則讀完該行就結束,如果該行超過bufsize-1個字元,則fgets只返回一個不完整的行,buf緩沖區以\0字元結束,下一次fgets調用會繼續讀取該行剩餘的字元;
頭文件:stdio.h;
返回值:若讀入成功,返回與參數buf相同的字元指針,若讀入過程中遇到EOF或發生錯誤,返回NULL指針。所以當遇到返回值為NULL的情況時,應使用ferror或feof函數檢查是發生錯誤還是遇到EOF。
2、常式:
#include<stdio.h>
int a;
char b,c[100];
int main(){
FILE * fp1 = fopen("input.txt", "r");//打開輸入文件
FILE * fp2 = fopen("output.txt", "w");//打開輸出文件
if (fp1==NULL || fp2==NULL) {//若打開文件失敗則退出
puts("不能打開文件!");
return 0;
}
fscanf(fp1,"%d",&a);//從輸入文件讀取一個整數
b=fgetc(fp1);//從輸入文件讀取一個字元
fgets(c,100,fp1);//從輸入文件讀取一行字元串
printf("%ld",ftell(fp1));//輸出fp1指針當前位置相對於文件首的偏移位元組數
fputs(c,fp2);//向輸出文件寫入一行字元串
fputc(b,fp2);//向輸出文件寫入一個字元
fprintf(fp2,"%d",a);//向輸出文件寫入一個整數
fclose(fp1);//關閉輸入文件
fclose(fp2);//關閉輸出文件,相當於保存
return 0;
}

閱讀全文

與c讀取文件到string相關的資料

熱點內容
哪些統計量可以反映數據波動 瀏覽:946
js地圖標記怎麼清空 瀏覽:479
googlenow教程 瀏覽:508
安全四個責任體系內容文件 瀏覽:965
南陽政務app怎麼注冊 瀏覽:343
照片壓縮包同一路徑的文件能刪嗎 瀏覽:590
路由沒網路怎麼辦 瀏覽:745
南京網站推廣大概多少錢 瀏覽:983
js隱藏列印出來 瀏覽:135
手工之家app哪裡下載 瀏覽:328
網路教育聯盟英語考試是什麼 瀏覽:69
macairwin10忘記密碼 瀏覽:716
java上傳方法 瀏覽:970
csc文件夾可以刪除嗎 瀏覽:130
打線工具怎麼用 瀏覽:376
mat文件如何轉換為cad 瀏覽:761
qq瀏覽器舊版本614 瀏覽:713
將資料庫文件批量導出excel 瀏覽:262
招投標文件在招標公司存多少年 瀏覽:551
u盤空間不足不能復制系統鏡像文件 瀏覽:212

友情鏈接