Python中文
首页
教程
问答
标签
搜索
登录
注册
在C语言中解析字符串并将其保存到结构数组中
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我对Python编码非常熟悉,但现在我必须用C来进行stringparsing</p> <p>我的意见:</p> <p>input=“命令1 arg1 args2 arg3;command2 args1 args2 arg3;cmd3 arg1 arg2 arg3”</p> <p>我的Python解决方案: 在</p> <pre><code>input = "command1 args1 args2 arg3;command2 args1 args2 args3;command3 arg1 arg2 arg3" compl = input.split(";") tmplist =[] tmpdict = {} for line in compl: spl = line.split() tmplist.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(spl) for l in tmplist: first, rest = l[0], l[1:] tmpdict[first] = ' '.join(rest) print tmpdict #The Output: #{'command1': 'args1 args2 arg3', 'command2': 'args1 args2 args3', 'cmd3': 'arg1 arg2 arg3'} </code></pre> <p>预期输出:Dict,命令作为键,参数在值中作为字符串连接</p> <p>到目前为止,我的C解决方案:</p> <p>我想将命令和参数保存在如下结构中:</p> ^{pr2}$ <ol> <li><p>我创建了一个struct char*数组来保存用“;”分隔的cmd+args:</p> <p>struct ari{char*value[200];};</p></li> </ol> <p>功能:</p> <pre><code>struct ari inputParser(char* string){ char delimiter[] = ";"; char *ptrsemi; int i = 0; struct ari sepcmds; ptrsemi = strtok(string, delimiter); while(ptrsemi != NULL) { sepcmds.value[i] = ptrsemi; ptrsemi = strtok(NULL, delimiter); i++; } return sepcmds; </code></pre> <ol> <li>按空间分隔命令和数组并将它们保存在我的结构中:</li> </ol> <p>首先,我添加了一个帮助结构:</p> <pre><code>struct arraycmd { struct cmdr lol[10]; }; struct arraycmd parseargs (struct ari z){ struct arraycmd result; char * pch; int i; int j = 0; for (i=0; i < 200;i++){ j = 0; if (z.value[i] == NULL){ break; } pch = strtok(z.value[i]," "); while(pch != NULL) { if (j == 0){ result.lol[i].command = pch; pch = strtok(NULL, " "); j++; } else { result.lol[i].args[j]= pch; pch = strtok(NULL, " "); j++; } } pch = strtok(NULL, " "); } return result; </code></pre> <p>我的输出函数如下所示:</p> <pre><code>void output(struct arraycmd b){ int i; int j; for(i=0; i<200;i++){ if (b.lol[i].command != NULL){ printf("Command %d: %s",i,b.lol[i].command); } for (j = 0; j < 200;j++){ if (b.lol[i].args[j] != NULL){ printf(" Arg %d = %s",j,b.lol[i].args[j]); } } printf(" \n"); } } </code></pre> <p>但它只产生垃圾(与python解决方案中的输入相同):<br/> (命令1 arg1 arg2 arg3;命令2 arg1 arg2 arg3;命令3 arg1 arg2 arg3)</p> <p>命令0:command1 Arg 0=command2 Arg 1=arg1 Arg 2=arg2 Arg 3=arg3 Arg 19=command2 Arg 21=arg1 Arg 22=arg2 Arg 23=arg3 Arg 39=command3 Arg 41=arg1 Arg 42=arg2 Arg 43=arg3 分段故障</p> <p>所以我希望有人能帮我解决这个问题。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您的问题是,您依赖于结构中的指针初始化为NULL。在</p> <p>它们只是随机值,因此SEGV。在</p> <p>当结构只有10个命令和19个参数时,还将打印200个命令和200个参数。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
我想从用户inpu创建一个类的实例
2 回答
我想从用户导入值,为此
9 回答
我想从用户那里得到一个整数输入,然后让for循环遍历该数字,然后调用一个函数多次
9 回答
我想从用户那里收到一个列表,并在其中执行一些步骤,然后在步骤完成后将其打印回来,但它没有按照我想要的方式工作
6 回答
我想从用户那里获取输入,并将值传递给(average=dict[x]/6),然后在那里获取resu
4 回答
我想从第一个列表中展示第一个词,然后从第二个列表中展示十个词,以此类推- Python
2 回答
我想从第一个空lin开始解析文本文件
10 回答
我想从简历、简历中提取特定部分
10 回答
我想从给定字典(python)的字符串中删除\u00a9、\u201d和类似的字符。
2 回答
我想从给定的网站Lin下载许多文件扩展名相同的Wget或Python文件
3 回答
我想从网上搜集一些关于抵押贷款的数据
5 回答
我想从网站上删除电子邮件地址
6 回答
我想从网站上读取数据该网站包含可下载的文件,然后我想用python脚本把它发送给oracle如何?
2 回答
我想从网站中提取数据,然后将其显示在我的网页上
4 回答
我想从网页上提取统计数据。
1 回答
我想从网页上解析首都城市,并在用户输入国家时在终端上打印它们
5 回答
我想从色彩图中删除前n个颜色,而不丢失原始颜色数
10 回答
我想从课堂上打印字典里的键
8 回答
我想从费用表中获取学生上次支付的费用,其中学生id=id
10 回答
我想从较低的顺序对多重列表进行排序,但我无法在一行中生成结果
5 回答