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

熱點內容
iphone4s運營商怎麼改 瀏覽:309
雲天視機升級怎麼弄 瀏覽:283
win10自帶的驅動刪除了怎麼辦 瀏覽:143
whatsapp此時無法下載 瀏覽:209
java網路位元組序轉換 瀏覽:233
美版iphone4蜂窩 瀏覽:626
word文件打開就最大化 瀏覽:998
經緯度和浮點數轉換工具 瀏覽:402
群星最新版本 瀏覽:471
歐洲童裝網站有哪些 瀏覽:783
win10默認頭像下載 瀏覽:216
dnf2017代碼大全 瀏覽:219
編程項目經理證書怎麼考 瀏覽:570
律師咨詢什麼app 瀏覽:863
ps導入ai什麼格式文件 瀏覽:255
手機升級系統的利弊 瀏覽:411
如何判斷兩列是否相同的數據 瀏覽:25
安卓系統微信文件夾 瀏覽:19
xp打開word找不到文件 瀏覽:488
文件名占容量 瀏覽:882

友情鏈接