C++文件读取问题

otfychly881989 2009-06-14 09:52:47
C++文件读取问题,下面是我写的一段代码,我才学习c++,不是很懂。希望大家能够指点下!!O(∩_∩)O谢谢
ifstream incth;
incth.open("test.txt",ios::in);
if(!incth)
{
cerr<<"Error!Cannot open file!"<<endl;
exit(1);
}

char ch,S[20],
int total=0;

while(incth.get(ch))
{
total++;
if(total<=6)
{
S[total]=ch; //我的意思是只把文件中的前6个字符赋给S;

}
}

cout<<endl;

if(strcmp(S,Num)==0) // ——>这里就是问题所在了,不能够判断啊无论我输入Num是什么,结果都是else里面的。
{
while(incth.get(ch))
cout<<ch<<endl;
}
else cout<<"不存在该项信息,请核对后再查询,O(∩_∩)O谢谢使用!"<<endl;

cout<<endl;
system("pause");
...全文
64 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
otfychly881989 2009-06-14
  • 打赏
  • 举报
回复
哦,谢谢10楼的朋友,把主要的问题解决了,后面虽然还是有点点问题,O(∩_∩)O哈哈~!!
otfychly881989 2009-06-14
  • 打赏
  • 举报
回复
嗯,开始我读了中文进去的,后面我去掉了,但是还是有其他字符,但是前6个是纯数字和字母的。
mengde007 2009-06-14
  • 打赏
  • 举报
回复
文件打开后就要关闭,然后再打开;不然的话,文件的指针指向了文件末尾了;
mengde007 2009-06-14
  • 打赏
  • 举报
回复

#include <iostream>
#include <memory.h>
#include <fstream>
using namespace std;

int main()
{

ifstream incth;
incth.open("D:\\text.txt",ios::in);
if(!incth)
{
cerr <<"Error!Cannot open file!" <<endl;
exit(1);
}

char Num[20];
memset(Num,0,20);
cin>>Num; //Num就是我要输入的一个字符串,和从文件中读取的字符串进行比较。
cout <<endl <<"查询结果:" <<endl;

char ch,S[20],total=0;
memset(S,0,20);

while(incth.get(ch))
{
if(total <=6) S[total]=ch;
total++;
}
incth.close();
incth.open("D:\\text.txt",ios::in);
if(!incth)
{
cerr <<"Error!Cannot open file!" <<endl;
exit(1);
}
cout <<endl;

if(strcmp(S,Num)==0)
{
while(incth.get(ch))
cout <<ch;
}
incth.close();
if(strcmp(S,Num)!=0)
cout <<"不存在该项信息,请核对后再查询,O(∩_∩)O谢谢使用!" <<endl;

cout <<endl;
//system("pause");
}
「已注销」 2009-06-14
  • 打赏
  • 举报
回复
char ch,S[20], 应该初始化一下。
用memset
或者S[6] = 0;

其他没什么,很简单的代码。
光宇广贞 2009-06-14
  • 打赏
  • 举报
回复
你的TXT是不是不是ANSI编码的,或者里面有非英文字符……
otfychly881989 2009-06-14
  • 打赏
  • 举报
回复
好像不行样,我开始试过了!!
otfychly881989 2009-06-14
  • 打赏
  • 举报
回复
我调试了一下,就是这个S[total]=ch; 有错误,传的时候有问题,出现了部分乱码。

或者说这里应该怎么才能将文件中的字符串存入一个变量中呢?
光宇广贞 2009-06-14
  • 打赏
  • 举报
回复
楼主,好像你需要在 S[6] 补一个

S[6] = '\0';


……是不是?
  • 打赏
  • 举报
回复
if(strcmp(S,Num)==0)
{
while(incth.get(ch))
cout < <ch;
}

你的S跟Num基本不可能是完全一样,所以if条件不满足很正常啊
otfychly881989 2009-06-14
  • 打赏
  • 举报
回复
哦,不好意思哈,我没有贴完,看这个吧!!谢谢了!!
char Num[20];
cin>>Num; //Num就是我要输入的一个字符串,和从文件中读取的字符串进行比较。
cout<<endl<<"查询结果:"<<endl;

ifstream incth;
incth.open("text.txt",ios::in);
if(!incth)
{
cerr<<"Error!Cannot open file!"<<endl;
exit(1);
}

char ch,S[20],total=0;

while(incth.get(ch))
{
total++;
if(total<=6) S[total]=ch;
}

cout<<endl;

if(strcmp(S,Num)==0)
{
while(incth.get(ch))
cout<<ch;
}
if(strcmp(S,Num)!=0)
cout<<"不存在该项信息,请核对后再查询,O(∩_∩)O谢谢使用!"<<endl;

cout<<endl;
system("pause");
光宇广贞 2009-06-14
  • 打赏
  • 举报
回复
Num是个什么东西?

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧