题解 | #句子逆序#
句子逆序
https://www.nowcoder.com/practice/48b3cb4e3c694d9da5526e6255bb73c3
#include <stdio.h> #include <stdlib.h> struct Sentense { char **words; char * str; unsigned short length; int top; int strCount; }; int main() { struct Sentense sentense; sentense.top=-1; sentense.strCount=0; sentense.length=100; sentense.words=(char **)malloc(sentense.length*sizeof(char *)); sentense.str = (char*)malloc(1000*sizeof(char)); while(1) { char c=getchar(); static unsigned short wordCount=0; if(c!=' '&&c!='\n') { wordCount++; sentense.str[sentense.strCount++]=c; } else { wordCount++; sentense.str[sentense.strCount++]='\0'; //如果堆栈不够大,拓展堆栈 if(sentense.top>=sentense.length-1){ sentense.length+=100; sentense.words = (char **)realloc(sentense.words, sentense.length*sizeof(char *)); } sentense.words[++sentense.top]=sentense.str+sentense.strCount-wordCount; wordCount = 0; if(c=='\n') break; } } while(sentense.top>=0) { printf("%s ",sentense.words[sentense.top--]); } return 0; }