新手求助!运行C语言程序时,出现该内存不能为“written”!是哪里出问题?谢谢!
以下程序编译没问题,运行时出现“0x77c160b4”指令引用的“0x00000010”内存。该内存不能为“written”。反复检查代码,不知道哪里出错!还是其他原因?希望好心人帮忙解答!具体代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#define BUF_LEN 101
#define CAP 5
int main(void)
{
char buf[BUF_LEN];
bool sorted = false;
unsigned int count = 0;
char *pTemp = NULL;
unsigned int capacity = CAP;
char *pS = (char*)calloc(capacity, sizeof(char));
if(!pS)
{
printf("内存不足!\n");
return 1;
}
printf("这是可以读入任意个英语谚语,并将它们以字长顺序由短到长地输出的程序!\n");
printf("最后以 END 为结束标志!\n");
printf("注意:输入的每条英语谚语不超过 %d 个字节(包括空格、标点符号),不然会少一截!\n", BUF_LEN - 1);
while(true)
{
char buf[BUF_LEN] = "\0";
printf("请输入第 %u 条英语谚语(按 Enter 结束输入):\n", count + 1);
printf("\t%u>.\t ", count + 1);
fgets(buf, BUF_LEN, stdin);
if(strcmp(buf, "END\n") == 0)
break;
else
{
pS[count] = (char*)malloc(BUF_LEN);
if(!pS[count])
{
printf("申请内存不成功!\n");
return 2;
}
strcpy(pS[count], buf);
++count;
}
if(count == capacity)
{
capacity += CAP;
pTemp = (char*)realloc(pS, capacity * sizeof(char));
if(!pTemp)
{
printf("没有分配内存!\n");
return 3;
}
pS = pTemp;
}
}
while(!sorted)
{
sorted = true;
int i = 0;
for(i = 0; i < count - 1; ++i)
{
if(strlen(pS[i]) > strlen(pS[i + 1]))
{
sorted = false;
pTemp = pS[i];
pS[i] = pS[i + 1];
pS[i + 1] = pTemp;
}
}
}
printf("\n以下是将你输入的英语谚语以字长由短到长的输出!\n");
int j = 0;
for(j = 0; j < count; ++j)
{
printf("\t%d>.\t%s\n", j + 1, pS[j]);
free(pS[j]);
pS[j] = NULL;
}
free(pS);
pS = NULL;
return 0;
}
[此贴子已经被作者于2017-3-27 08:05编辑过]