说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

高手帮我看一下这个奇怪的问题

编辑:说三道四文库 发布时间:2018-02-25 02:20
HTML文档下载 WORD文档下载 PDF文档下载
FILE * stream;
char buff[128];
char a[128];
long uin;
CString name,pwd;
stream = fopen( "C:\\a.txt", "r" );
   if( stream == NULL )
      MessageBox("Can't open the file");
   else
   {
   fseek(stream,0L, SEEK_SET);
   fscanf(stream,"%s",&buff);
   }
   
int n=0;????????????????????????
for(int j=0;j<strlen(buff);j++)
           {..........}
但我的做debug时时 运行到上面?号处时 在buff里是我读文件所得的字符串,而在
a中  从尾部的一段里有和buff里同样的内容,  问题处在那儿??
最好用memset来吧缓冲区设置为0
memset(buff,0,sizeof(buff))
...
可能没有问题。如果buffer刚好在a的后面分配内存的话。
如果buffer刚好在a的后面分配内存的话。那看起来就好像保存在a中。
分配的两个字符串数组在内存中时连续的,当从文件读数据时,如果文件内容大于127时,就会越界,buff中溢出的字符就存在a中
fscanf(stream,"%s",&buff);


%s  读出的长度是不是超过了  buff 的长度 128

自动加到了相邻的 a[128]   中去


建议用  fread
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘