程序的功能是输入字符串存入pS指针,进行大小对比后按从小到大输出。发现当输入字符串超过5个时程序会停止运行,恳请哪位大神帮我看下代码有什么问题。
代码如下:
#include
#include
#include
#define BUF_LEN 100
#define COUNT 5
int main(void)
{
char buf[BUF_LEN];
size_t str_count=0;
size_t capacity=COUNT;
char pS=(char)calloc(capacity,sizeof(char*));
char** psTemp=NULL;
char* pTemp=NULL;
size_t str_len=0;
bool sorted=false;
printf("Enter strings to be sorted,one per line.Press Enter to end:\n");
char ptr=NULL;
while(true)
{
ptr=fgets(buf,BUF_LEN,stdin);
if(!ptr)
{
printf("Error reading string.\n");
free(pS);
pS=NULL;
return 1;
}
if(*ptr=='\n') break;
if(str_count==capacity)
{
capacity+=capacity/4;
if(!(psTemp=(char*)realloc(pS,capacity))) return 1;
pS=psTemp;
}
str_len=strlen(buf)+1;
if(!(pS[str_count]=(char*)malloc(str_len))) return 2;
strcpy(pS[str_count++],buf);
}
while(!sorted)
{
sorted=true;
for(size_t i=0;i
{
if(i==(str_count-1))
break;
if(strcmp(pS[i],pS[i+1])>0)
{
sorted=false;
pTemp=pS[i];
pS[i]=pS[i+1];
pS[i+1]=pTemp;
}
}
}
printf("Your input sorted in ascending sequence is:\n\n");
for(size_t k=0;k<str_count;++k)
{
printf("%s",pS[k]);
free(pS[k]);
pS[k]=NULL;
}
free(pS);
pS=NULL;
return 0;
}
新人求助,c语言问题。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答
悬赏问题
- ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
- ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
- ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
- ¥30 3天&7天&&15天&销量如何统计同一行
- ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
- ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
- ¥15 vs2019中数据导出问题
- ¥20 云服务Linux系统TCP-MSS值修改?
- ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
- ¥20 怎么在stm32门禁成品上增加查询记录功能