一个c语言segment fault问题,请大侠指出错误
发布网友
发布时间:2024-10-21 00:22
我来回答
共3个回答
热心网友
时间:2024-11-18 09:48
1、p没有申请内存,指针必须申请内存或者指向有效地址。
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;
}
热心网友
时间:2024-11-18 09:51
大概是p没有分配内存的问题,在do循环那边出错
热心网友
时间:2024-11-18 09:45
就是p没分配内存的问题
而且n也没初始化
你用%c往int里输入,还有3个字节是不会自动清零的,导致你后面判断不出来回车
你写得太乱了,你这个程序要干什么?