V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  zeroday  ›  全部回复第 22 页 / 共 50 页
回复总数  993
1 ... 18  19  20  21  22  23  24  25  26  27 ... 50  
@besto
@canautumn
@davidjqq19 谢谢了,学会了 malloc 的用法。发现 C 中的指针真的很难,昨晚我在调式代码找错误时,发现如果输入的字符串不是题目的格式,比如 ”dasdas,dasdas,asdasd", 程序就提示
terminated by signal SIGSEGV (Address boundary error)
@NeoAtlantis 一开始我用 Java 实现并且通过,只是课程要求必须用 C 实现,准备改写为 C 时发现,C 中并没有 Java的处理字符串的函数,然后自己写函数实现,但是指针字符串没过关,就遇到现在这种情况了。C 处理字符串感觉没有 Java 方便。
@kingcos 没,是我写的一点都不好。

我简单介绍一下我的代码。

char* str_sub( char str[], int start, int end );

切割出传入的字符串,从下标为 start 到 end为止。
思路是,创建一个 end-start+1 长度的字符数组,循环字符串,将字符串中下标为 start 到 end 的字符 传入到数组中,最后返回这个数组,即切割好的字符串

void str_split( char* words[], char str[], char* delim );

将字符串根据指定的字符切割成,字符串数组。
这里我需要将题目中传入的句子根据逗号切割成字段,就用到它。它的实现,用到 strtok() 切割字符串,用法我是参考文档的,我做的就是将切割好的字符串,存到字符串数组中,字符串数组我定义为 char ** 不知道合不合适。

int chk_sum( char sen[] );

计算校验和
根据题目要求计算 '$'到'*'的所有字符的异或值

int hex_to_dec( char *s );
将十六进制转化为十进制

int chk_val( char sen[] );
得到字符串最后一个字段'*'字符后面的两个数字

void print_bjt( char uct[] );
根据传入的 uct 字符串,打印 bjt ,格式为 hh:mm:ss

int is_vaild( char *words[], int chksum, int chkval );
根据题目要求验证,0号字段是否为"$GPRMC",2号字段是否为“A",并且验证校验和,即从字符'$'到''中间的所有字符的异或为''后面的两个字符
@1423
memset(uct, 0, sizeof(uct));
吗?
@davidjqq19 奇怪,zsh shell 和 bash shell 都试了,还是乱码

➜ ~ gcc test.c -std=c99
➜ ~ ./a.out
$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50
chksum=80 chkval=80
word[1]=$GPRMC
word[2]=024813.640
$GPRMC
024813
?X?
END
?X?
-1:?X:?⏎
@fliar 我试着添加代码

strncpy( uct, str_sub( words[1], 0, 6 ), 6 );
uct[6] = '\0';

uct 输出依旧是乱码
@lx19891024 就是输出 uct 是一个乱码,相不明白怎么会是乱码呢?
@ooxxcc
@FrankFang128
@zealic
@lijinma

不好意思,我的情况是我的 repository 中已经有我的提交记录和添加的文件,原分支没有,作者也不大算接受,这种情况下也可以这样同步吗?
@proudzhu 分词的思路是这样的,按 append 中逆向最大匹配分词的思路来说。

首先需要有一个字典对切分的单词作匹配。比如类似图中的:
你 我 他 爱 北京 天安门 研究 研究生 命 生命 的 起源

然后传入一个句子进行切分单词,同时定义一个列表来存放匹配成功后的词,比如
研究生命的起源

我们从句子的末尾进行匹配。因为字典词的最大长度为 3,故我们先匹配的词为末尾三个字符,即
的起源

“的起源”不在字典中,故改变词的长度,变为长度2,匹配的词则变为
起源

“起源”在字典中,匹配成功,则存入列表中。

然后句子从“生命的”开始,继续匹配。

如果句子中有列表中不存在的词,则将单个汉字作为词存入列表。

这样,最后匹配的结果为:
研究 生命 的 起源

匹配的结果比图片中正向最大匹配分词更为正确。(正向最大分词的思路和逆向差不多,区别是从头开始匹配)
@proudzhu
@hahastudio
@Sylv
明白了,原来问题在后面的代码中, word_max_len 传错参数。
@hahastudio sen 不是在下面处理了呢?
@skyline75489 不好意思,我图截大了,右键打开图片可以放大的。
2015-01-14 17:18:15 +08:00
回复了 zeroday 创建的主题 问与答 Dash 怎么快速查找单个语言的 API 呢?
@otakustay 谢谢了,这个方法更高效。
2015-01-14 13:55:48 +08:00
回复了 zeroday 创建的主题 问与答 Dash 怎么快速查找单个语言的 API 呢?
@zhyu
@lululau
@watsy0007
明白了,谢谢各位。Dash 中的 docset 有一个默认的 keyword。

然后在 Alfred 中用 `dash keyword: query`就可以搜索制定语言的 API 了。
2015-01-10 21:49:51 +08:00
回复了 zeroday 创建的主题 Python 请问 python 中 for [key] in iter( raw_input, "" ) 用法
@20015jjw 哦,原来 iter 函数作用是这个。谢谢解惑了。
2015-01-10 21:48:46 +08:00
回复了 zeroday 创建的主题 Python 请问 python 中 for [key] in iter( raw_input, "" ) 用法
@hahastudio 谢谢了提醒,下次编码的时会注意用函数名做变量名的。

help 命令很有用。
2015-01-10 12:19:32 +08:00
回复了 zeroday 创建的主题 Python 请问 python 中 for [key] in iter( raw_input, "" ) 用法
@yakiang 谢谢解答。参数填入`raw_input` 明白了。

第二个参数是`""`,意味着不输入是吗?

这个语句执行的是,

对于每个输入的值i,做循环,直到i为空,即用户不输入,直接回车时,退出循环。是这样吗?
2015-01-08 19:18:22 +08:00
回复了 fooCoder 创建的主题 程序员 每天分享一个 vim 插件,必须不烂尾……
博客貌似访问不了了。
2015-01-04 19:36:30 +08:00
回复了 wilsoncao 创建的主题 macOS 大家都用些什么 safari 插件呢?( chrome 用户勿进!!)
@zwl2828 Adguard 看扩展名字是去广告扩展,和 Adblock 相比哪个更佳?
@aaaa007cn 原来是这样。有时候写代码时思绪很乱,总喜欢推掉重写一个,一方面重新理清思路,一方面也是为了让代码看起来更美观。

根据猜测测试用例改了代码。这是按我第一次的代码进行修改,终于全部通过了。

附上代码,感觉有点乱,我还是先歇歇。

https://gist.github.com/arcticlion/f2ca9e98b7b629969187

其实最近找这些题来做,是为了训练程序语言的控制结构的运用,培养用编程语言解决问题的逻辑思维。
1 ... 18  19  20  21  22  23  24  25  26  27 ... 50  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5925 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 03:02 · PVG 11:02 · LAX 19:02 · JFK 22:02
Developed with CodeLauncher
♥ Do have faith in what you're doing.