参数解析C语言
参数解析
http://www.nowcoder.com/questionTerminal/668603dc307e4ef4bb07bcd0615ea677
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char str[100];
int len, num, i, j, flag, first;
while(scanf("%[^\n]", &str)){ // 遇到换行符结束
int label[100];
int l;
l = 0;
len = strlen(str);
num = 0;
flag = 1;//遇到第一个引号前
first = 0;
for (i = 0; i < len; i++){
if(str[i] == '"' && flag == 1){//双引号是这样表示吗??
flag = 2;//遇到第二个引号前
first = i + 1;
}
else if(str[i] == '"' && flag == 2){
flag = 3;//第二个引号后面的空格
num++;
label[l] = first;
l++;
label[l] = i-1;
l++;
first = i + 2;
}
else if(str[i] == ' ' && flag == 3){
flag = 1;
}
else if(str[i] == ' ' && flag == 1){
num++;
label[l] = first;
l++;
label[l] = i-1;
l++;
first = i + 1;
}
else if(str[i] != '"' && i + 1 == len){
num++;
label[l] = first;
l++;
label[l] = i;
l++;
}
}
printf("%d\n", num);
for(i = 0; i < l; i++){
if(i%2 == 0){
for(j = label[i]; j <= label[i+1]; j++){
printf("%c", str[j]);
}
printf("\n");
}
}
}
return 0;
}注意1:9行 scanf遇到空格、回车、跳格键会结束输入
scanf("%[^\n]",str); //读到'\n'结束读取
查看18道真题和解析
腾讯公司福利 1143人发布