首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从我的字符串中提取一些数据,然后使用sscanf,否则

从我的字符串中提取一些数据,然后使用sscanf,否则
EN

Stack Overflow用户
提问于 2011-12-05 16:44:03
回答 4查看 228关注 0票数 0

我在C上很穷,我只是在学它。我有一根绳子,像:

代码语言:javascript
复制
 a          322  4.1   5.2

(带空格/制表符/空格)

代码语言:javascript
复制
 b     1.22  4.1   5.2 4.11

没有空格的所有字符串的获取方法是什么?

代码语言:javascript
复制
string[0]="s";
string[1]="322";
string[2]="4.1";

等等。

编辑

我只是想找到最好的或最快的方法来做,大行号码。(70-100.000字符串)

致力于Android/galaxy s/linkedlist

测试:使用C++(没有字符串/std),71.000数组花费了7-8秒,java花费了14秒。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-05 18:22:11

最初的海报用sscanf()问了什么

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>

int main(){
    // 5 elements, each of 32 bytes, 31 for characters the 32nd for storing \0
    char string[5][32];
    char* inputString="a          322  4.1   5.2";
    memset(string,0,sizeof(string));//to initialize to NULL, always be safe on C
    sscanf(inputString,"%s%s%s%s",string[0],string[1],string[2],string[3]);
    printf("res0= %s\n",string[0]);
    printf("res1= %s\n",string[1]);
    printf("res2= %s\n",string[2]);
    printf("res2= %s\n",string[3]);
    return 0;
}

这将打印:

代码语言:javascript
复制
res0= a
res1= 322
res2= 4.1
res2= 5.2
票数 2
EN

Stack Overflow用户

发布于 2011-12-05 16:48:13

正如Martin所说,您可以使用strtok,这是推荐的可移植性。但是,如果您的系统有可用的strsep,我将使用它。它的手册页上的BSD有解决您的问题在示例部分。

代码语言:javascript
复制
#include <string.h>
int main()
{
    char input[] = " a          322  4.1   5.2"; 
    char **ap, *argv[5], *inputstring = input;

    for (ap = argv; (*ap = strsep(&inputstring, " \t")) != NULL;)
        if (**ap != '\0')
            if (++ap >= &argv[10])
                break;

    /* degubber output for `p argv':
     *
     * $1 = {
     *  0x1001009a1 "a",
     *  0x1001009ac "322",
     *  0x1001009b1 "4.1",
     *  0x1001009b7 "5.2",
     *  0x0
     * }
     */
}
票数 1
EN

Stack Overflow用户

发布于 2011-12-05 17:11:39

拆分字符串的最安全方法(特别是如果您不知道字符串可能包含什么)是斯特托克

您还可能需要检查如何在“C”中创建string[]数组

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8388695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档