参数解析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'结束读取