题解 | #参数解析#
参数解析
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;
}