关于用vc++编写文件输入与输出的程序
我的程序如下:#include<iostream.h>#include<fstream.h>#include<string.h>intmain(){char*test[3...
我的程序如下:
#include<iostream.h>
#include<fstream.h>
#include<string.h>
int main()
{
char *test[30];
int i;
char fw[30];
ofstream ofi;
ifstream ifi;
cout<<"请输入你需要的文本:";
cin>>test[30];
cout<<"请输入你所要保存的文件名:";
cin>>fw[30];
ofi.open(fw);
for(i=0;i<strlen(test[30]);i++)
{
ofi<<test[30];
}
ofi<<endl;
return 0;
}
我编译这个程序时没有错误,执行完后,我没有找到我所建立的那个文件,就算找到了那个文件也是空白的,没有我执行是输入的文字.
我想问一下这是什么原因,要怎样解决.
可是我输入的是aaaaaaaaa(9个a)但是所生成的文件里却有大概90个a和我输入的字符个数出入太大了请问是怎么回事,该怎么办? 展开
#include<iostream.h>
#include<fstream.h>
#include<string.h>
int main()
{
char *test[30];
int i;
char fw[30];
ofstream ofi;
ifstream ifi;
cout<<"请输入你需要的文本:";
cin>>test[30];
cout<<"请输入你所要保存的文件名:";
cin>>fw[30];
ofi.open(fw);
for(i=0;i<strlen(test[30]);i++)
{
ofi<<test[30];
}
ofi<<endl;
return 0;
}
我编译这个程序时没有错误,执行完后,我没有找到我所建立的那个文件,就算找到了那个文件也是空白的,没有我执行是输入的文字.
我想问一下这是什么原因,要怎样解决.
可是我输入的是aaaaaaaaa(9个a)但是所生成的文件里却有大概90个a和我输入的字符个数出入太大了请问是怎么回事,该怎么办? 展开
展开全部
#include<iostream.h>
#include<fstream.h>
#include<string.h>
int main()
{
char *test[30];
int i;
char fw[30];
//::memset(fw,0,30);
ofstream ofi;
ifstream ifi;
cout<<"请输入你需要的文本:";
cin>>test[30];
cout<<"请输入你所要保存的文件名:";
cin>>fw;
ofi.open(fw);
for(i=0;i<strlen(test[30]);i++)
{
ofi<<test[30];
}
ofi<<endl;
return 0;
}
你的 cin>>fw[30].这句有问题,首先是fw[30]这个空间是未知的你并没有分配,因为fw的 下标直到29.其次,你这样只是给fw数组的最后一位赋值了
所以有错误。。
测试案例:
第一次输入 :dddddddddddd
第二次输入:aa.txt
那么将在程序所在的文件夹下看到这个文件,并且是正确 的 !
】
针对楼主的补充提问,我补充说明下,按照楼下的做法是没有错的 ,
但是我 说一下为什么上面我写的有错
char *test[30];
这里定义的是指针数组。至于什么是 指针数组,如果你不懂,可以参考有关资料。
那么cin>>test[30];
这句就是你把数据都写到test[30]这个指针指向的 地方了
for(i=0;i<strlen(test[30]);i++)
这句循环的次数是你输入的字符数目,
ofi<<test[30];
而这句将会把你输入的字符都写到文件中 ,放在循环体内,将会不断的输出同样的很多次
所以才出现你说的问题 ,
另外还有一个很严重的问题,第一次写的时候我也没注意,就是cin>>test[30];
有两个问题,
1.test[30]这个数组元素你并没有定义,是不能使用的,在这里之所以没有出错误,因为他是一个指针,指向的地方本身是没有有用数据的。如果你的磁盘空间很满,那么这杨写出现的问题的概率就很大了。所以你使用的下标不能>=30;
2test30];
这个指针你并没有给他分配内存,也就是通常所谓的野指针,指向一个未知的地方。应该NEW一个内存
这个指针使用的时候 有的时候会出现问题的。。一定要注意!!
#include<fstream.h>
#include<string.h>
int main()
{
char *test[30];
int i;
char fw[30];
//::memset(fw,0,30);
ofstream ofi;
ifstream ifi;
cout<<"请输入你需要的文本:";
cin>>test[30];
cout<<"请输入你所要保存的文件名:";
cin>>fw;
ofi.open(fw);
for(i=0;i<strlen(test[30]);i++)
{
ofi<<test[30];
}
ofi<<endl;
return 0;
}
你的 cin>>fw[30].这句有问题,首先是fw[30]这个空间是未知的你并没有分配,因为fw的 下标直到29.其次,你这样只是给fw数组的最后一位赋值了
所以有错误。。
测试案例:
第一次输入 :dddddddddddd
第二次输入:aa.txt
那么将在程序所在的文件夹下看到这个文件,并且是正确 的 !
】
针对楼主的补充提问,我补充说明下,按照楼下的做法是没有错的 ,
但是我 说一下为什么上面我写的有错
char *test[30];
这里定义的是指针数组。至于什么是 指针数组,如果你不懂,可以参考有关资料。
那么cin>>test[30];
这句就是你把数据都写到test[30]这个指针指向的 地方了
for(i=0;i<strlen(test[30]);i++)
这句循环的次数是你输入的字符数目,
ofi<<test[30];
而这句将会把你输入的字符都写到文件中 ,放在循环体内,将会不断的输出同样的很多次
所以才出现你说的问题 ,
另外还有一个很严重的问题,第一次写的时候我也没注意,就是cin>>test[30];
有两个问题,
1.test[30]这个数组元素你并没有定义,是不能使用的,在这里之所以没有出错误,因为他是一个指针,指向的地方本身是没有有用数据的。如果你的磁盘空间很满,那么这杨写出现的问题的概率就很大了。所以你使用的下标不能>=30;
2test30];
这个指针你并没有给他分配内存,也就是通常所谓的野指针,指向一个未知的地方。应该NEW一个内存
这个指针使用的时候 有的时候会出现问题的。。一定要注意!!
展开全部
cin>>test[30];
cin>>fw[30];
这两句有问题,换成
cin>>test;
cin>>fw;
另外ofi.open(fw);中还应该加个参数ofi.open(fw,ios::out)
还有下面的也要改
for(i=0;i<strlen(test[30]);i++)
{
ofi<<test[30];
}
ofi<<endl;
return 0;
}
换成
for(i=0;i<strlen(test);i++)
{
ofi<<test[i];
}
ofi<<endl;
return 0;
}
这会应该没事了
cin>>fw[30];
这两句有问题,换成
cin>>test;
cin>>fw;
另外ofi.open(fw);中还应该加个参数ofi.open(fw,ios::out)
还有下面的也要改
for(i=0;i<strlen(test[30]);i++)
{
ofi<<test[30];
}
ofi<<endl;
return 0;
}
换成
for(i=0;i<strlen(test);i++)
{
ofi<<test[i];
}
ofi<<endl;
return 0;
}
这会应该没事了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询