题解 | #参数解析#
参数解析
http://www.nowcoder.com/practice/668603dc307e4ef4bb07bcd0615ea677
#include<stdio.h>
int main(){
char str[1001] = {'0'};
while(gets(str)){ //1.接收字符串
int len = strlen(str); //2.获取字符串总长度
//3.计算参数个数--遇到"跳过计数
int count = 1;
if(str[0] == ' '){ //3.1若第一个是空格,则第一个不计参数数
count = 0;
}
//3.2计算参数数
for(int i = 0; i <len; i++){
if(str[i] == ' ')
count++; //3.2.1若出现空格 先参数数累加
if(str[i] == '"'){ //3.2.2判断是否遇到首"
//3.2.3跳转至"中的第一个字符
//3.2.4序列值累加直到遇到末"为止,期间只计数,此时若""中出现空格也不计数
while(str[++i] != '"'){}
}
}
printf("%d\n", count);
//4.输出分解后的参数
for(int i = 0; i < len; i++){
if(str[i] != ' '){
if(str[i] != '"'){
printf("%c", str[i]); //4.1没有遇到"时正常输出直到' '为止
}
else{//4.2遇到首"时,跳转至"内第一个字符串开始连续输出至遇到末"为止
while(str[++i] != '"'){
printf("%c", str[i]);
}
}
}
else{
printf("\n"); //5.各参数输出结束后(即遇到' '或者末'"'),回车换行
}
}
}
return 0;
}