用strlen就报错It stopped with signal SIGSEGV, Segmentation fault.,怎么回事呢?

gnolk 2018-10-10 09:03:35
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
int file_size2(char* filename)
{ struct stat statbuf;
stat(filename,&statbuf);
int size=statbuf.st_size;
return size;

}
int main(void)

{
int ii,tt;
unsigned char n;


FILE *fp,*file1;
char *ywj="D:\\a\\ceshi001_b.lks";
int ljl;

char *sstr1;
int wjzd;
if((fp=fopen(ywj,"ab+"))==NULL)
{
printf("\n不能打开!");

exit(1);
}
wjzd=file_size2(ywj);

fread(sstr1, sizeof(unsigned char), wjzd, fp);

fclose(fp);

ljl=strlen(sstr1);

printf("ljl=%d",ljl);


}
...全文
470 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
英雄@末路 2018-10-10
  • 打赏
  • 举报
回复
sstr1 的空间呢?
自信男孩 2018-10-10
  • 打赏
  • 举报
回复
char *sstr1是一个野指针,指向的内存空间是随机的。出现段错误那是因为它指向了不能写的位置,建议使用Malloc先为其申请空间或直接定义一个字符数组。
其实出现多错误的地方可能是:fread导致的,因为fread用到sstr1
棉猴 2018-10-10
  • 打赏
  • 举报
回复
sstr1只是一个空指针,没有为它分配空间。

70,024

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧