C语言读文本文件中的一部分,哪里有问题呢

来源:百度知道 编辑:UC知道 时间:2024/05/31 15:20:40
ID.TXT文件如:7890ABC L312345 1S7890ABCL312345
程序实现,从ID.TXT中读取第20-24个字符(例如上面这个文件中的7890),然后替换成输入的5个字符,然后写入到ID.TXT.为什么显示的BUF是乱码,而且写入不成功呢?请高手指教.谢谢,如果可以的话,我会加分.
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char *argv[6])
{
int i,t,k,m;
char j[10];
char buf[6];
FILE *ID;

if (argc!=2)
{
printf("Please enter an unique pam.");
return 1;
}
else
{
if((ID=fopen("ID.LOG","r"))==NULL)
printf("Open ID.LOG Fail");
else
ID=fopen("ID.LOG","w+");
fseek(ID,19,SEEK_SET);
t=ftell(ID);
printf("%d\n",t);
getch();
fgets(buf,6,ID);
/*fread(buf,1,6,ID); */

你最好用2进制方式打开
比如 fread fwrite 函数
不要用文本模式读写文件

这样不容易错

原来的文件中有数字和字母 调入编译器后 占用的内存空间不同

if((ID=fopen("ID.LOG","r"))==NULL) 改为if((ID=fopen("ID.LOG","r+"))==NULL) .同时在fwrite(argv[6],1,5,ID); 前面加上fseek(ID,19,SEEK_SET);
试试吧.
我在VC6.0中这样写的
#include<stdio.h>
#include<stdlib.h>
int main()
{

int t;
char buf[6];
FILE *ID;

if((ID=fopen("zhangjumin.txt","r+"))==NULL) //我用的是TXT的文件.
printf("Open ID.LOG Fail");
else
{
fseek(ID,19,SEEK_SET);
t=ftell(ID);
printf("%d\n",t);
fgets(buf,6,ID);
printf("%s\n",buf);
printf("Please insert your string:");
scanf("%s",buf);
printf("%s\n",buf);
fseek(ID,19,SEEK_SET);
fwrite(buf,1,6,ID);
fclose(ID);
}
return 0;