题解 | #参数解析#
参数解析
https://www.nowcoder.com/practice/668603dc307e4ef4bb07bcd0615ea677
#include <stdio.h> #include <string.h> int main() { int i, num = 0, flag = 0; char str[1001] = {0}; fgets(str, 1001, stdin); int len = strlen(str); if(str[len - 1] == '\n') //末尾置0,标志字符串结束 { str[len-1] = 0; len--; } for(i = 0; i<len; i++) //对空格和 “ ”做区分 { if(str[i] == '\"') //“在计算机内部存储时\"、\" { str[i] = 0; flag = ~flag; //两次翻转即使得参数个数仅+1 } if(str[i] == ' ' && !flag) //flag=1时表示“”里,空格不统计 { str[i] = 0; num++; } } num++; printf("%d\n", num); printf("%s\n", str); //输出第一个被\0区分开的字符串 for(i = 1; i<len; i++) { if(str[i] == 0 && str[i+1]) //以0以及后面非0作为判断参数个数的方法 { printf("%s\n", &str[i+1]); } } return 0; }