一个c语言segment fault问题,请大侠指出错误
供稿:hz-xin.com 日期:2025-01-13
segment fault是干什么的
2、接收数据方式有问题。
3、p类型应为char
#include<stdio.h>
#include<string.h>
void main()
{
int i,j,n=0;
int k=0;
char *p=new char[20];//char p[20];
char c;
char s[]={"sos"};
float answer;
scanf("%s",p);
n = strlen(p);
for(i=0;i<n;i++)
for(j=k;j<3;j++)
if(s[j]==p[i])
{
c=s[j];
s[j]=s[k];
s[k]=c;
k++;
}
answer=k/(float)n;
printf("%f",answer);
delete []p;
}
大概是p没有分配内存的问题,在do循环那边出错
就是p没分配内存的问题
而且n也没初始化
你用%c往int里输入,还有3个字节是不会自动清零的,导致你后面判断不出来回车
你写得太乱了,你这个程序要干什么?
SegmentFault 是一家中文的开发者社区及媒体。最初的产品原型来自于国外最大的程序员问答社区 StackOverflow,但其产品形态经过一年多的发展,已经有问答、博客、活动等,它还是多个黑客马拉松活动的组织方。
SegmentFault 网站在,。公司名为杭州堆栈科技有限公司,总部位于杭州。
SegmentFault 创始人合照
SegmentFault 团队将黑客马拉松活动引入中国,至今已经在国内一线互联网城市以及台北、新加坡、硅谷等地区举办了超过 20 场黑客马拉松。是目前中国最大的黑客马拉松组织方。
该公司最初由四人创立,其中一人已离职,其余三人:
高阳,联合创始人,任公司 CEO;
祁宁,公司创始人,任公司 CTO,同时也是Typecho开源项目发起者;
董锋,联合创始人,任设计师,是Typecho开源项目设计师兼前端。
segment fault原除0错memcpy覆盖别内存使用野指针释放该释放指针等等
建议哟printf打印查执行哪句segment fault再确定原引起
2、接收数据方式有问题。
3、p类型应为char
#include<stdio.h>
#include<string.h>
void main()
{
int i,j,n=0;
int k=0;
char *p=new char[20];//char p[20];
char c;
char s[]={"sos"};
float answer;
scanf("%s",p);
n = strlen(p);
for(i=0;i<n;i++)
for(j=k;j<3;j++)
if(s[j]==p[i])
{
c=s[j];
s[j]=s[k];
s[k]=c;
k++;
}
answer=k/(float)n;
printf("%f",answer);
delete []p;
}
大概是p没有分配内存的问题,在do循环那边出错
就是p没分配内存的问题
而且n也没初始化
你用%c往int里输入,还有3个字节是不会自动清零的,导致你后面判断不出来回车
你写得太乱了,你这个程序要干什么?