導航:首頁 > 文件教程 > 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相關的資料

熱點內容
如何判斷復制文件是否完整 瀏覽:803
qq接收的語音文件在 瀏覽:408
手機qq禁止查看動態 瀏覽:923
如何用編程求解二重積分 瀏覽:366
在桌面上搜索不到文件夾 瀏覽:723
中外文專利網站有哪些 瀏覽:682
尖刀車端面槽怎麼編程 瀏覽:70
電腦重裝會把所有文件都刪掉嗎 瀏覽:982
java匿名內部類構造函數 瀏覽:573
如何ftp文件到linux 瀏覽:894
win10文件夾的圖片自動排列 瀏覽:155
安卓電腦文件管理器 瀏覽:512
聯想手機k860刷機教程 瀏覽:356
oa刪除已發文件 瀏覽:397
win7asp配置文件 瀏覽:362
java網頁能做心跳機制 瀏覽:817
逆戰文件應用在哪裡 瀏覽:102
紅頭文件訂書紅線在哪裡 瀏覽:851
excel怎麼做文件頭 瀏覽:703
為什麼word找不到文件菜單 瀏覽:671

友情鏈接