#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. -->: 请按任意键继续. . .
onemoo
相关分类