从 Char* 数组(C 字符串)中提取数字
我有一个以这种格式出现的字符串:
.word 40
我想提取整数部分。整数部分始终不同,但字符串始终以 .word
开头。我有一个标记生成器函数,它适用于除此之外的所有内容。当我将 .word
(.word 带空格)作为分隔符时,它返回 null。
我怎样才能提取号码?
谢谢
I have a string that occurs in this format:
.word 40
I would like to extract the integer part. The integer part is always different but the string always starts with .word
. I have a tokenizer function which works on everything except for this. When I put .word
(.word with a space) as a delimiter it returns null.
How can I extract the number?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您可以使用 strtok() 来提取以空格作为分隔符的两个字符串。
在线演示:
输出:
如果您想要数字
40 作为数值而不是字符串,那么您可以进一步使用
atoi() 将其转换为数值。
You can use strtok() to extract the two strings with space as an delimiter.
Online Demo:
Output:
If you want the number
40
as a numeric value rather than a string then you can further useatoi() to convert it to a numeric value.
您可以使用 sscanf 从字符串中提取格式化数据。 (它的工作方式与 scanf 类似,但从字符串而不是标准输入中读取数据)
You can use sscanf to extract formated data from a string. (It works just like scanf, but reading the data from a string instead of from standard input)
检查字符串
如果返回 0,那么您的字符串以“.word”开头,然后您可以查看(您的字符串)+ 6 以找到数字的开头。
Check the string with
If this returns 0, then your string starts with ".word " and you can then look at (your string) + 6 to get to the start of the number.
此代码在控制台中写入所有数字。
This code write in console all digits.
星号告诉 scanf 不要存储它读取的字符串。如果要从文件中读取,请使用 fscanf;如果输入已在缓冲区中,请使用 sscanf。
The asterisk tells scanf not to store the string it reads. Use fscanf if you're reading from a file, or sscanf if the input is already in a buffer.
又快又脏:
Quick and dirty: