作者jim771212 (均)
看板C_and_CPP
标题[问题] 读档读到换行..
时间Sun Nov 8 16:15:49 2009
从.txt档里面读迷宫的0和1
/* 读档 */
void Read(int m[])
{
FILE *file;
int i;
char a[300];
file=fopen("maze.txt","r");
for(i=0;fscanf(file,"%c",&a[i])!=EOF;i++)
{
m[i]=atoi(&a[i]); //字元转数字
}
fclose(file);
}
a[300]是用来读.txt里的0和1,放的是字元
我想把a[300]里的字元"0"和"1"转成数字的0和1放在m[]里
不过因为.txt里本来就是一个矩阵(正方形矩阵)的图案,所以会读到"\n"的字元
想问的是,有无方法剔除掉,在读档的时候读到的"\n",
然後把剔除完"\n"的阵列再转成m[i](数字的) ?
上网有查到使用strtok指令可以剃除字串里的想要剔除字元
但不清楚怎麽使用
也想问一下
如果char[300]每10个"0"或"1"字元读取完後会读到"\n"的时候
若用strtok这个指令剔除\n的话,
那样剔除後,会留下一个原本放"\n"的空间吗?
还是会由下一个字元来补它的空间?
谢谢帮忙
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.47.67.73
※ 编辑: jim771212 来自: 114.47.67.73 (11/08 16:21)
1F:→ joefaq:直接%d不行吗? 11/08 17:07
2F:推 LPH66:楼上应该不行 因为0和1看来是黏在一起的 11/08 18:04
3F:→ LPH66:是说你已经读进到 a[i] 了 那去判断它是不是 '\n' 就行啦 11/08 18:05
4F:→ LPH66:然後如果是单个字元的转数字 -'0' 即可 11/08 18:06
5F:→ LPH66:这样用 atoi 可能会有意外事情发生 XD 11/08 18:06
6F:→ jim771212:窘 感谢楼上的帮忙 真的发生意外了XD 11/08 18:52
7F:→ jim771212:感谢LP大的帮忙 这问题已经解决了 感谢 11/08 19:00
8F:推 tw00088437:二楼怎麽好像在puz***板看过 XD 11/08 19:03
9F:推 buganini:algorithm跟puzzle是一体两面XD 11/08 21:07