【nowcoder】字符串参数解析
来源:互联网 发布:mac 炉石传说 插件 编辑:程序博客网 时间:2024/05/21 15:33
题目描述
在命令行输入如下命令:
xcopy /s c:\ d:\,
各个参数如下:
参数1:命令字xcopy
参数2:字符串/s
参数3:字符串c:\
参数4: 字符串d:\
请编写一个参数解析程序,实现将命令行各个参数解析出来。
解析规则:
1.参数分隔符为空格
2.对于用“”包含起来的参数,如果中间有空格,不能解析为多个参数。比如在命令行输入xcopy /s “C:\program files” “d:\”时,参数仍然是4个,第3个参数应该是字符串C:\program files,而不是C:\program,注意输出参数时,需要将“”去掉,引号不存在嵌套情况。
3.参数不定长
4.输入由用例保证,不会出现不符合要求的输入
输入描述:
输入一行字符串,可以有空格
输出描述:
输出参数个数,分解后的参数,每个参数都独占一行
以下是我的通过代码。
#include<stdlib.h>#include<stdio.h>int main() { char a[1000];//参数字符数组 char c; int i=0,n=0,j=0,k=0; int p[100];//参数之间空格为止记录数组 while((c=getchar())!='\n')//单个读取参数字符,直到回车为止 { if(c=='"')//这个if处理用引号括起来的参数 { while((c=getchar())!='"')//不断读取引号内的字符直到引号结束,这样就可以把引号内的空格读入,同时没有读入引号 { a[i]=c; i++; } } else if(c==32)//参数之间的分隔空格的处理 { n++;//n记录参数之间空格的个数 ,参数个数为n+1 a[i]=c; p[j]=i;//记录空格的位置,之后输出参数的时候要用 j++; i++; } else { a[i]=c; i++; } } printf("%d\n",n+1); j=0; while(j<i)//遍历参数数组 { if(j==p[k]){如果遍历到空格位置,不输出空格而是换行 printf("\n"); k++; j++; }else { printf("%c",a[j]); j++; } }}我的思路是第一遍循环先单个读入字符,记录下参数分隔空格的位置和个数,去掉引号,放入字符数组中。然后输出参数个数。
第二遍循环根据当前数组遍历的位置判断是否为参数分隔空格处,如果是则输出换行符,不是的话则一次输出参数。
运行结果如图所示。
C语言知识点回顾:
字符串读取的三种方式:
1.getchar() 读取单个字符,以换行判断是否结束输入。
2.gets() 可以接收有空格的字符串,以换行结束输入,最后默认写入\0作为字符串结束标志。
3.scanf("%s",str) 只接收空格之前的字符串,但是若写成scanf("[^\n]",str),则可以有空格。
欢迎讨论交流~
阅读全文
1 0
- 【nowcoder】字符串参数解析
- Java-NowCoder-字符串反转
- Java-NowCoder-字符串分隔
- nowcoder--字符串分割
- Java-NowCoder-字符串排序
- Java-NowCoder-字符串加密
- nowcoder--计算字符串的个数
- NowCoder-按字节截取字符串
- main参数字符串解析
- Java-NowCoder-字符串最后一个单词的长度
- Java-NowCoder-删除字符串中出现次数最少的字符
- 参数字符串的构建与解析类
- MYSQL连接字符串参数解析(解释)
- MYSQL连接字符串参数解析(解释)
- NowCoder数列
- NowCoder猜想
- NowCoder错题
- 【nowcoder】四则运算
- input标签中autocomplete="off"失效的具体解决办法
- KM算法
- PCA主成分分析
- 存储过程(1)----开篇
- JS时间的计算,剩余时间的计算
- 【nowcoder】字符串参数解析
- C++学习笔记之map键值对的修改
- MSSQL注入之木马上传拿webshell
- 封装tap事件
- javaWeb的MVC思想解读
- python 中zip()函数
- 编写一个表达学生和课程关系的程序-Java描述
- git忽略已经被提交的文件
- chmod 777 修改权限