慕的地10843
我给大改了一下(也不在乎能不能被选为最佳了,嘿嘿)。输入字符串和整数都可以,要以英文逗号分隔,长度不要超过500。怕看不明白加了点注释,看不懂的可以问我:)#include<stdio.h>#include<string.h>int ParseStr(char (&szInput)[500], char *(&arrRet)[500]){ int nCount = 0; char szSeps[] = ","; // 键盘输入的整数用英文逗号分隔. char *token = NULL; token = strtok(szInput, szSeps); while (token!=NULL && nCount<500/*防止越界*/) { int nLen = strlen(token); char *szToken = new char[500]; // 申请内存 if (szToken == NULL) // 分配内存失败 break; arrRet[nCount++] = szToken; if (nLen < 500) strcpy(szToken, token); else { strncpy(szToken, token, 500-1); szToken[500-1] = 0; // 结束符 } token = strtok(NULL, szSeps); } return nCount;}void antitone(char *(&arrParsed)[500], int n){ int nMid = n/2; for (int i=0; i<nMid; ++i) { char* szTemp = arrParsed[i]; arrParsed[i] = arrParsed[n-1-i]; arrParsed[n-1-i] = szTemp; }} void PutoutResult(char *(&arrParsed)[500], int n){ for (int i=0; i<n; ++i) { if (i > 0) printf(","); printf("%s", arrParsed[i]); } printf("\n");}void FreeArrayData(char *(&arrParsed)[500], int n) // 释放内存{ for (int i=0; i<n; ++i) { delete arrParsed[i]; arrParsed[i] = NULL; }}void main(){ char szInput[500] = {0}; gets(szInput); // 获取输入,以英文逗号分隔. char *arrParsed[500] = {0}; // 解析结果 int nCount = ParseStr(szInput, arrParsed); // 逆序 antitone(arrParsed, nCount); // 输出结果 PutoutResult(arrParsed, nCount); // 释放内存 FreeArrayData(arrParsed, nCount);}嘿嘿,附个测试结果吧: