作者ebubble (coffee)
看板C_and_CPP
标题[问题] 读档 阵列转换 写入档案 问题
时间Mon Nov 9 17:44:18 2015
最近常在做这重复的事情:
http://imgur.com/8kglEPk
就是机器产生出.txt, 因为格式刚好与新机器不同,
因此目前都是人工手动调整变换格式
又刚学C一阵子, 想说就实际例子刚好当个作业来练习,
程式码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *fp1, *fp2;
int main(void)
{
char *token;
char szLine[100]; // 足够装下一行的 buffer
char seps[] = ",\n"; // 以逗点与换行当作分隔符号
char *coeff[10][10];
char *newcoeff[10][10];
char filename1[30], filename2[30];
int i, j;
i = 0;
printf("请输入来源档名: ");
scanf("%s", filename1);
printf("请输入目的档名: ");
scanf("%s", filename2);
fp1 = fopen(filename1, "r");
fp2 = fopen(filename2, "w+");
if ((fp1 == NULL) || (fp2 == NULL))
{
printf("file open error.\n");
}
else
{
while (fgets(szLine, sizeof(szLine), fp1)) // 一次读进一行
{
token = strtok(szLine, seps); // 分割
if ((token != NULL))
{
for(j = 0; j <10; j++)
{
token = strtok(NULL, seps); // 继续分割
//printf("%s\n", token);
coeff[i][j] = token;
newcoeff[i][j] = coeff[i][j];
fputs(coeff[i][j], fp2);
printf("%s", coeff[i][j]);
}
printf("\n");
}
i = i + 1;
}
fclose(fp1);
fclose(fp2);
}
printf("测试看看~~~~~\n\n");
/*for(i = 0; i< 4; i++)
{
for(j = 0; j <10; j ++)
{
printf("%s ", newcoeff[i][j]);
}
printf("\n");
}*/
system("pause");
return 0;
}
实际结果:
http://imgur.com/nLky6io
遇到了以下几个问题, 想请教各位高手:
1. 萤幕输出与实际档案内容不一致:
萤幕输出:
http://imgur.com/jUxe1xH
实际档案内容:
http://imgur.com/WodqLFe
实际内容最前面的1都被砍掉了.....
2. 想将萤幕输出内容写到另一个新档案中,内容是写进去了,
但格式不一致:
萤幕输出:
http://imgur.com/jUxe1xH
新档案内容:
http://imgur.com/pLHnHDU
新档案内容完全没有换行的动作.....
3. 也是目前最困扰我的, 完全没头绪该如何下手, 就是该如何把之前
去掉的"逗号", 再新增到相对应的位置
请各位不吝指教, 请告诉我该朝哪个方向做修改,
或是该参考哪些网路资料呢? 感谢!!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.251.233.249
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1447062260.A.9D0.html
1F:推 stupid0319: 不要用strtok呀,太依赖现成含数 11/09 19:02
2F:→ ebubble: 哈 一步一步来吧 我用现成的都还没做出来.... 11/09 19:32
4F:→ x000032001: 改这样就好了吧 只是coeff处理下一行 存的值就没用了 11/09 19:33
5F:→ ebubble: 感谢帮忙!! 经过修改後已完成~ 11/10 22:25