导航:首页 > 文件教程 > 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相关的资料

热点内容
微信小程序按钮颜色 浏览:69
长江大学网课用什么app 浏览:431
华中系统图纸编程哪个刀好 浏览:38
地方债务数据在哪里查看 浏览:932
扫描文件怎么设置格式 浏览:957
苹果邮箱主机名填什么 浏览:630
多张图片同一个文件夹 浏览:798
win7怎么打开shs文件 浏览:481
怎么把文件夹做成iso 浏览:164
缤客网站上的房价怎么在哪里修改 浏览:406
单片机c51计数器实验代码 浏览:990
宏编程鼠标代表什么意思 浏览:753
别人捡到苹果6有用吗 浏览:829
word文件用wps打开 浏览:477
macbook修改文件格式软件 浏览:757
美版s7edge那个版本好 浏览:529
视频隐藏在文件夹里 浏览:144
网络通讯基础是什么 浏览:209
办公电脑文件管理 浏览:222
火化费报销文件有哪些 浏览:998

友情链接