这代码邪门了解决办法
这代码邪门了
难道是内存出了问题吗?很明显bb,dd应该一样,但结果居然。。。
结果:
------解决方案--------------------
(str[t[2]++] = fgetc(p)
--》
str超过40, 把后面的内存(包括dd)给覆盖了吧。
------解决方案--------------------
文件指针p/pp和数组str都可能超出范围。
难道是内存出了问题吗?很明显bb,dd应该一样,但结果居然。。。
// awesome
#include"stdio.h"
#include"time.h"
int main()
{
int cc = 0, bb = 0, aa = 0, dd = 0;
long yy = 0;
char t[7], str[40];
long t1 = 1;
t[2] = 0;
FILE *p = NULL, *pp = NULL;
p = fopen("/sdcard/sqlN.txt", "r+");
pp = fopen("/sdcard/gottenN.txt", "w+");
while (1)
{
aa++;
cc++;
while ((t[3] = fgetc(p)) != '\'')
{
}
while ((str[t[2]++] = fgetc(p)) != '\'');
str[t[2] - 1] = 0, t[2] = 0;
fprintf(pp, "%s", str);
bb++;
dd++;
if (dd > 76212)
{
printf("aa=%d,dd=%d,cc=%d,bb=%d\n", aa, dd, cc, bb);
return (1);
}
}
}
结果:
邪门
------解决方案--------------------
(str[t[2]++] = fgetc(p)
--》
str超过40, 把后面的内存(包括dd)给覆盖了吧。
------解决方案--------------------
文件指针p/pp和数组str都可能超出范围。