求教。。谢谢!!!
在文本文档中有如下数据:1111111111122222223333333333344444445555555555666666667777777777788888889...
在文本文档中有如下数据:
11111111111 2222222 33333333333 4444444 5555555555 66666666
77777777777 8888888 99999999999 0000000 1212121212 13131313
14141414141 1515151 16161616161 1717171 1818181818 19191919
23232323232 2424242 25252525252 2626262 2727272727 28282828
将它转换成下面的形式:
11111111111 2222222 99999999999 0000000 1818181818 19191919
33333333333 4444444 1212121212 13131313 23232323232 2424242
5555555555 66666666 14141414141 1515151 25252525252 2626262
77777777777 8888888 16161616161 1717171 2727272727 28282828
另存入新文本。
大家帮我看看下面程序错在哪了:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i=0,max,j=0;
char s[20][81],*p="w1.txt";
FILE *fp1,*fp2;
fp2=fopen("w2.txt","w");
if ((fp1=fopen("w1.txt","r"))==NULL)
{ printf("Open file %s error! Strike any key to exit!",p);
system("pause");
exit(0);
}
while(i<20&&fgets(s[i],81,fp1)!=NULL)
{ p=strchr(s[i],'\n');
if(p) *p='\0';
i++;
}
fclose(fp1);
max=i;
for(i=0;i<max;i++)
{for(j=0;j<3;j++)
fprintf(fp2,"%s",s[0]+i*20+j*20);
fprintf(fp2,"\n");
}
fclose(fp2);
system("pause");
return 0;
}
应该是从倒数第九行开始错的。。。。谢谢了。。。 展开
11111111111 2222222 33333333333 4444444 5555555555 66666666
77777777777 8888888 99999999999 0000000 1212121212 13131313
14141414141 1515151 16161616161 1717171 1818181818 19191919
23232323232 2424242 25252525252 2626262 2727272727 28282828
将它转换成下面的形式:
11111111111 2222222 99999999999 0000000 1818181818 19191919
33333333333 4444444 1212121212 13131313 23232323232 2424242
5555555555 66666666 14141414141 1515151 25252525252 2626262
77777777777 8888888 16161616161 1717171 2727272727 28282828
另存入新文本。
大家帮我看看下面程序错在哪了:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i=0,max,j=0;
char s[20][81],*p="w1.txt";
FILE *fp1,*fp2;
fp2=fopen("w2.txt","w");
if ((fp1=fopen("w1.txt","r"))==NULL)
{ printf("Open file %s error! Strike any key to exit!",p);
system("pause");
exit(0);
}
while(i<20&&fgets(s[i],81,fp1)!=NULL)
{ p=strchr(s[i],'\n');
if(p) *p='\0';
i++;
}
fclose(fp1);
max=i;
for(i=0;i<max;i++)
{for(j=0;j<3;j++)
fprintf(fp2,"%s",s[0]+i*20+j*20);
fprintf(fp2,"\n");
}
fclose(fp2);
system("pause");
return 0;
}
应该是从倒数第九行开始错的。。。。谢谢了。。。 展开
4个回答
展开全部
原文件数据可以看成:
11...11 2222222 33...33 4444444 55...55 66...66 77...77 8888888
99...99 0000000 12...12 13131313 14...41 15...51 16...61 1717171
18...18 19191919 23...32 2424242 25...52 26...62 27...27 28282828
所以说原题相当于矩阵的转置。算法可参考矩阵转置方法。桥锋本题的关键是如何处理数据。试验了几种方法,只有如下的比较简洁并具有一定通用性且不易出错。
本题一个完整的c程序如下,程序在win-tc和Dev-c++下都调试毕敬通过。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i=0,j,max;
char a[12][30],b[12][30],*p="w1.txt";/*设源文件为w1.txt*/
FILE *fp1,*fp2;
fp2=fopen("w2.txt","w"); /*设写入新文件w2.txt*/
if ((fp1=fopen("w1.txt","r"))==NULL)
{ printf("Open file %s error! Strike any key to exit!",p);
system("pause");
exit(0);
}
for(i=0;i<12;i++)
fscanf(fp1,"%s%s",a[i],b[i]);
fclose(fp1);
for(i=0;i<4;i++)
for(j=0;j<3;j++)
{ fprintf(fp2,j==2?"%s %s \n"敏数晌:"%s %s ",a[4*j+i],b[4*j+i]);
printf(j==2?"%s %s \n":"%s %s ",a[4*j+i],b[4*j+i]);
}
printf("\n");
fclose(fp2);
system("pause");
return 0;
}
11...11 2222222 33...33 4444444 55...55 66...66 77...77 8888888
99...99 0000000 12...12 13131313 14...41 15...51 16...61 1717171
18...18 19191919 23...32 2424242 25...52 26...62 27...27 28282828
所以说原题相当于矩阵的转置。算法可参考矩阵转置方法。桥锋本题的关键是如何处理数据。试验了几种方法,只有如下的比较简洁并具有一定通用性且不易出错。
本题一个完整的c程序如下,程序在win-tc和Dev-c++下都调试毕敬通过。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i=0,j,max;
char a[12][30],b[12][30],*p="w1.txt";/*设源文件为w1.txt*/
FILE *fp1,*fp2;
fp2=fopen("w2.txt","w"); /*设写入新文件w2.txt*/
if ((fp1=fopen("w1.txt","r"))==NULL)
{ printf("Open file %s error! Strike any key to exit!",p);
system("pause");
exit(0);
}
for(i=0;i<12;i++)
fscanf(fp1,"%s%s",a[i],b[i]);
fclose(fp1);
for(i=0;i<4;i++)
for(j=0;j<3;j++)
{ fprintf(fp2,j==2?"%s %s \n"敏数晌:"%s %s ",a[4*j+i],b[4*j+i]);
printf(j==2?"%s %s \n":"%s %s ",a[4*j+i],b[4*j+i]);
}
printf("\n");
fclose(fp2);
system("pause");
return 0;
}
展开全部
逻辑不对,从倒数第9行开始改,蚂首已调试成功
for (i = 0; i < max; i++)
{
for(j = 0; j < 3; j++)
{
char temp = s[(i + j * 4) /郑岁 3][((i + j * 4) % 3) * 20 + 19];
s[(i + j * 4) / 3][((i + j * 4) % 3) * 20 + 19] = '\0';
fprintf(fp2, "%s ", &s[(i + j * 4) / 3][((i + j * 4) % 3) * 20]);
s[(i + j * 4) /闷丛数 3][((i + j * 4) % 3) * 20 + 19] = temp;
}
fprintf(fp2, "\n");
}
fclose(fp2);
system("pause");
return 0;
for (i = 0; i < max; i++)
{
for(j = 0; j < 3; j++)
{
char temp = s[(i + j * 4) /郑岁 3][((i + j * 4) % 3) * 20 + 19];
s[(i + j * 4) / 3][((i + j * 4) % 3) * 20 + 19] = '\0';
fprintf(fp2, "%s ", &s[(i + j * 4) / 3][((i + j * 4) % 3) * 20]);
s[(i + j * 4) /闷丛数 3][((i + j * 4) % 3) * 20 + 19] = temp;
}
fprintf(fp2, "\n");
}
fclose(fp2);
system("pause");
return 0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for(j=0;j<森盯4;j++)
{
for(i=0;i<max;i++)
{
if((i%8>=2*j)&&(i%8<2*(j+1)))
{
fprintf(fp2,"%s",s[i]);
}
}
fprintf(fp2,"\n");
}
如果没数错应该是汪春伏困携24个吧
{
for(i=0;i<max;i++)
{
if((i%8>=2*j)&&(i%8<2*(j+1)))
{
fprintf(fp2,"%s",s[i]);
}
}
fprintf(fp2,"\n");
}
如果没数错应该是汪春伏困携24个吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询