本文目录一览:
- 1、C语言里如何把已有的字符串写入文件里?
- 2、C语言如何将字符串写入文本文件?
- 3、c语言中string声明的变量如何存进文件去?
- 4、编程问题:怎么把string类保存到二进制文件中?
- 5、java中如何把String数组写到文件里
C语言里如何把已有的字符串写入文件里?
设要写入的数字是int型,则用控制字符串%d和%s来完成,举例代码行如下:
fprintf(fp,"%d %s\n",12345,"abcdefg");
其中:fp是成功写打开文件的指针。此代码行先向文件写入整型数字12345,再加一个空格,接着写入字符串abcdefg,然后写入'\n'。
#include "stdio.h"
#include "string.h"
void main()
{
char a[6]="china";
char temp[1024];
int n=0;//记录有多少个china
FILE *outFile=fopen("c:\b.txt","r+");
FILE *inFile=fopen("c:\a.txt","r+");
while(fgets(temp,500,inFile)!=NULL)
{
int k=0;
for(int i=0;istrlen(temp);i++)
{
if(temp[i]==a[k] kstrlen(a))
{
k++;
}
else
{
if(k==strlen(a))
{
n++;
fprintf(outFile,"%s
",a);
}
k=0;
}
}
}
}
在C盘要有这两个文件。。。
a文件中可能有多个china ,指定加到第几行自己看情况 在设置一个int变量记录就行了
C语言如何将字符串写入文本文件?
从键盘输入一行字符,写入一个文件, 再把该文件内容读出显示在屏幕上。\x0d\x0a#include\x0d\x0amain()\x0d\x0a{\x0d\x0aFILE *fp;\x0d\x0achar ch;\x0d\x0aif((fp=fopen("string","wt+"))==NULL)\x0d\x0a{\x0d\x0aprintf("Cannot open file strike any key exit!");\x0d\x0agetch();\x0d\x0aexit(1);\x0d\x0a}\x0d\x0aprintf("input a string:\n");\x0d\x0ach=getchar();\x0d\x0awhile (ch!='\n')\x0d\x0a{\x0d\x0afputc(ch,fp);\x0d\x0ach=getchar();\x0d\x0a}\x0d\x0arewind(fp);\x0d\x0ach=fgetc(fp);\x0d\x0awhile(ch!=EOF)\x0d\x0a{\x0d\x0aputchar(ch);\x0d\x0ach=fgetc(fp);\x0d\x0a}\x0d\x0aprintf("\n");\x0d\x0afclose(fp);\x0d\x0a}-怎么把string写进文件
c语言中string声明的变量如何存进文件去?
在C语言中并没有string类型的变量。string类型变量是C++的。
1 在C语言中,字符串是用字符数组表示的,要将字符串存到文件中,可以使用
fprintf函数。
代码如下:
fprintf(fp, "%s", str);
其中,fp为打开的文件指针,str为字符串变量。
2 在C++中,要将string类型变量存到文件中,根据文件操作的方式,有如下两种:
a)ofstream流对象打开的文件。
使用重载即可。如
outstr;
其中,str为string对象,而out为ofstream对象。
b)fopen打开的文件。
要将string对象存到fopen打开的文件中,要先把string转为C格式的字符串。即字符数组形式,可以使用string的c_str()成员函数。然后再如1中所述,使用fprintf输入到文件。
代码:
fprintf(fp, "%s",str.c_str());
编程问题:怎么把string类保存到二进制文件中?
分类: 电脑/网络 程序设计 其他编程语言
问题描述:
#include iostream
#include string
#include fstream
using namespace std;
int main()
{
string str1;
string str2;
cin str1;
cin str2;
ofstream outfile("temp.dat",ios::binary);
if(! outfile)
{
cerr "Error ! " endl;
return 0;
}
outfile.write((char * )str1,sizeof(string));
outfile.write((char * )str2,sizeof(string));
outfile.close();
ifstream infile("temp.dat",ios::binary);
if (! infile)
{
cerr "Error ! " endl;
return 0;
}
infile.read((char * )str1,sizeof(string));
infile.read((char * )str2,sizeof(string));
cout str1 endl;
cout str2 endl;
return 1;
}
如果我就这样执行的话,str1和str2能保存到文件,而且能够成功读取并显示。
但如果我把“保存”的那一段代码删掉,读取就会失败,显示乱码。怎么回事?怎么解决?(不要复制一大堆东西过来,谢谢。)
解析:
不是以上两位说的原因,因为string类实际上是对char*的封装,你用write那样写其实只是把对应的指针也就是内存地址写进文件了,在执行期,读出的是指针,这时内存中的字符串还在,可以正确显示,你把"保存"的那段删了,实际上刚才在内存中的东西已经没有了,输出的也就是乱码了,这就是你错的原因,我改了下你的程序:-怎么把string写进文件
#include iostream
#include string
#include fstream
using namespace std;
int main()
{
string str1;
string str2;
int len1,len2;
cin str1;
cin str2;
ofstream outfile("temp.txt",ios::binary);
if(! outfile)
{
cerr "Error ! " endl;
return 0;
}
len1=str1.length();
len2=str2.length();
outfile.write((char*)str1.c_str(),len1);
outfile.write(" ",sizeof(char));
outfile.write((char*)str2.c_str(),len2);
outfile.write(" ",sizeof(char));
outfile.close();
ifstream infile("temp.txt",ios::binary);
if (! infile)
{
cerr "Error ! " endl;
return 0;
}
infilestr1str2;
cout str1 endl;
cout str2 endl;
return 1;
}
改的地方一眼就看出来了,就不说了,其实我用的方法很简单也有缺陷,不过这只是一个演示,如果你明白我刚才说的那些,知道了原理,你很容易改成任意你想要的效果
java中如何把String数组写到文件里
这个方法比较多我常用的是:
String[] ary = {"abc", "123", "45"};
StringBuffer sb = new StringBuffer();
for(int i = 0; i ary.length; i++){
sb. append(ary[i]);
}
String newStr = sb.toString();
如果是char数组可以
char data[] = {'a', 'b', 'c'};
String str = new String(data);
或直接利用Array工具的方法。
要特别注意的是象Array的很多转换函数是把(字符数)组直接转换成