在D盘 test1中,存放10个整数,要求在insert中,能将给定的整数X插入到10个整数中规定的位置,在主调函数中输入待插入的数和位置,将插入后的结果重新写并输出到回到原来test1中
/* Note:Your choice is C IDE */
#include "stdio.h"
#include "stdlib.h"
void insert(int *p,int i,int x)
{int a[11],j;
for(j=0;j<11;j++)
if(j==(i-1))
{{a[j]=x;
continue;}
a[j]=*(p++); }
p=a;}
main()
{FILE *fp;
int a[11],i,p,x;
if((fp=fopen("d:\\test1.txt","r+"))==NULL)
{printf("the file can't open");
exit(0);
}
for(i=0;i<11;i++)
a[i]=getw(fp);
scanf("%d,%d",&p,&x);
insert(a,p,x);
for(i=0;i<11;i++)
{putw(a[i],fp);
printf("%d",a[i]);}}
----------------解决方案--------------------------------------------------------
我要下了,没法帮你改了,
大致有以下两个问题:
1。函数有问题,这个帖子有,你可以看一下:http://www.bc-cn.net/bbs/dispbbs.asp?boardID=5&ID=66821&page=1
2。getw和putw这里用错,改成用用fscanf()和fprintf.
----------------解决方案--------------------------------------------------------
我就是搞不懂咱有错误,我想了好久哟
----------------解决方案--------------------------------------------------------
希望那个高手给我看一下哈,在这里谢谢了哟
----------------解决方案--------------------------------------------------------
你不要回贴灌水了,先去玩会,一会我告诉你
----------------解决方案--------------------------------------------------------
直接插入好象不行吧,覆盖数据吧
把他都读出来,插入进去,再写入文件
----------------解决方案--------------------------------------------------------
文件中数据之间以一个空格隔开~先输入位置,再输入需要插入的数据
[CODE]
#include "stdio.h"
#include "stdlib.h"
void Insert(int *array,int subcript,int x) /*subcript插入的位置*/
{
int j;
for(j=9;j>subcript-2;j--)
array[j+1]=array[j];
array[subcript-1]=x;
}
int main()
{
FILE *fp;
int array[11],i,subcript,x;
if((fp=fopen("d:\\test1.txt","rt+"))==NULL)
{
printf("the file can't open\n");
exit(-1);
}
for(i=0;i<10;i++)
fscanf(fp,"%d ",&array[i]);
scanf("%d%d",&subcript,&x);
Insert(array,subcript,x);
rewind(fp);
for(i=0;i<11;i++)
fprintf(fp,"%d ",array[i]);
fclose(fp);
return 0;
}
[/CODE]
----------------解决方案--------------------------------------------------------
请问各位一下.if((fp=fopen("d:\\test1.txt","rt+"))==NULL)中的rt+中的t是什么意思??
还有为什么不能用putw各getw这两个专门读写一个整数年的函数,偏偏用fprintf 各fscanf这两个函数呢??他们两个之间有什么区别没????
----------------解决方案--------------------------------------------------------
//遵照“最小改动原则”
//总算保住了getw()和putw()
//已经在Turbo C下调试通过
#include "stdio.h"
#include "stdlib.h"
int* insert(int *p,int i,int x)
{ static int a[11],j;
for(j=0;j<11;j++)
if(j==(i-1))
{ a[j]=x;
continue;
}
else
a[j]=*(p++);
return a;//原p=a是不可取的
}
main( )
{ FILE *fp;
int a[11],i,p,x,*b;
if((fp=fopen("d:\\test1.txt","r+"))==NULL)
{ printf("the file can't open\n");
exit(0);
}
for(i=0;i<11-1;i++)
a[i]=getw(fp);
rewind(fp);
scanf("%d,%d",&p,&x);
b=insert(a,p,x);
for(i=0;i<11;i++)
{ putw(b[i],fp);
printf("%d ",b[i]);
}
fclose(fp);
getch();
}
----------------解决方案--------------------------------------------------------
我还是搞不懂rt+是什么意思,哪能位高手给我解释一下嘛
----------------解决方案--------------------------------------------------------