#include<stdio.h> #include<string.h> /**第一步 设置tagFl=1,如果遇到空格则替换成换行符,并计数并跳过循环。否则将值赋值给新数组 * 第二步 如果遇到"则置tagFl=0遇到空格则不替换成换行符。 * 第三步 只到遇到下一个"则置tagFl=1.循环第一步 */ int main(int argc, char const *argv[]) { char strs[100] = { 0 }; char pStr[100] = { 0 }; memset(strs, 0x00, strlen(strs)); while (gets(strs)) { //初始化 int tagFl = 1; int count = 1;//记录命令数,根据不在引号里的空格数 memset(pStr, 0x00, strlen(pStr)); int x = strlen(strs); for (int i = 0; i < x; i++) { if (strs[i] == '"' && tagFl == 1 ) { tagFl = 0; continue; } if (strs[i] == '"' && tagFl == 0) { tagFl = 1; continue; } if (tagFl) { if (strs[i] == ' ') { strcat(pStr, "\n"); count++; continue; } strncat(pStr, strs+i, 1); } else { strncat(pStr, strs+i, 1); } } printf("%d\n", count); printf("%s", pStr); } return 0; }