这个strcat函数的问题出在哪里?

suncs2001 2007-11-13 09:59:11
我写的一个小程序,想实现从文本文件里读取一个一个字符,然后将字符用strcat函数连接起来,遇到文件结束就停止.

#include<iostream.h>
#include<stdio.h>
#include<string.h>


void main()
{
char dest[20]="";
char* temp=new char [1];
FILE* fp;
if((fp=fopen("1.txt","r"))==NULL)
{
cout<<" read error!"<<endl;

}
char ch=fgetc(fp);
dest[0]=ch;
while(ch!=EOF)
{
ch=fgetc(fp);
temp[0]=ch;

strcat(dest,temp);
}
cout<<dest<<endl;

}

我的文本输入是"haha",而程序输出是"ha h a"不知道是什么原因.
当然一个一个字符输出可以,用某些函数也可以,但是我需要将单词读出来而且有指针指向,因为后面可能需要对单词的每一个字符进行分析.
...全文
144 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
suncs2001 2007-11-14
  • 打赏
  • 举报
回复
太感谢了!
kecp 2007-11-14
  • 打赏
  • 举报
回复
LS正解,strcat是对字符串进行连接的,
你之前没加个字符串结束标志给它,所以
无法正确运行。
不用strcat也可以这样改

char ch=fgetc(fp);
int i=0;
dest[i++]=ch;
while(ch!=EOF&&i<20)
{
ch=fgetc(fp);
dest[i++]=ch;

}
geniuscaobo 2007-11-13
  • 打赏
  • 举报
回复

#include <iostream.h>
#include <stdio.h>
#include <string.h>


void main()
{
char dest[20]= " ";
char* temp=new char [2];
temp[1] = '\0';
FILE* fp;
if((fp=fopen( "1.txt ", "r "))==NULL)
{
cout << " open error! " <<endl;
return;
}
char ch=fgetc(fp);
dest[0]=ch;
while(ch!=EOF)
{
ch=fgetc(fp);
temp[0]=ch;

strcat(dest,temp);
}
cout <<dest <<endl;

}

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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