#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <stdbool.h>
#define CAP_INCR 5
#define MAX 100
int main(void)
{
bool sorted = true;
unsigned j = 0;
char more = '\0';
char* ptr = NULL;
char buffer[MAX] = "";
unsigned count = 0; //count how many yanyu inputed
unsigned init = 5;
char* ptemp = NULL;
char** pTemp = NULL;
char** slangs = calloc(init,sizeof(char*));
//Let us get the input
for (;;)
{
printf("Input a piece of slang.\n-->:");
ptr = fgets(buffer, MAX, stdin);
*(slangs + 1) = ptr; (这里的一原本是 count++ ,现在是测试问题的)
if (*ptr == '\n')break;
//If the memory is small
if ((count - 1) == init) //the memory isn't enough
{
init += CAP_INCR;
pTemp = realloc(slangs, init*sizeof(slangs));
if (!pTemp) //if failed!
{
printf_s("Error !!!\n");
free(slangs);
slangs = NULL;
exit(1);
}
slangs = pTemp;
pTemp = NULL;
}
printf("%s",*(slangs+1));(这里可以显示)
}
printf("%s",*(slangs+1)); (是为测试用的) (没显示任何东西)
/*//Now let's sort it (这里用冒泡排序)
while (!sorted)
{
sorted = true;
for (size_t i = 0; i < count -1; i++)
{
if (strnlen_s(slangs[i], MAX) < strnlen_s(slangs[i + 1], MAX))
{
sorted = false;
ptemp = slangs[i];
slangs[i] = slangs[i+1];
slangs[i + 1] = ptemp;
}
}
}
//Output them
for (size_t i = 0; i < count; ++i)
{
printf_s("\n%s\n",slangs[i]);
}*/
free(slangs);
slangs = NULL;
return 0;
}
(在windows 7上的运行结果,用的是visual studio 2015 community)
Input a piece of slang.
-->:这是运行结果
这是运行结果
Input a piece of slang.
-->:第一个能显示出来
第一个能显示出来
Input a piece of slang.
-->:第二个就不行了
第二个就不行了
Input a piece of slang.
-->:当然换成 let alone : count++
当然换成 let alone : count++
Input a piece of slang.
-->:希望各位指教!!!!
希望各位指教!!!!
Input a piece of slang.
-->:感谢各位
感谢各位
Input a piece of slang.
-->:
请按任意键继续. . .
- 1 回答
- 0 关注
- 1325 浏览
添加回答
举报
0/150
提交
取消