繁体   English   中英

扫描 C 中的字符串列表

[英]Scanning a list of strings in C

我已经很久没有在 C 中编码了,似乎我忘记了如何做基本的事情。

我需要实现以下目标:

在 scanf 中,用户将输入各种用 char ' '划分的单词,例如:

"check hello world"

我想将第一个单词保留为字符串,并将所有 rest 保留为字符串数组。 在这种情况下,结果将是:

char first[] = "check";
char *args[] = {"hello", "world"};

我知道的唯一限制是 OVERALL 大小小于或等于 100 个字符。 (包括第一个+args)。

关于如何实现这一目标的任何建议?

正如评论中所指出的,我认为您的问题似乎是strtok的一个简单用例。 您可以为输入声明一个字符串,为 args 声明一个数组,如下所示:

    char input[100];
    char first[100];
    char args[100][100];
    const char delimiter[2] = " ";

然后你会把字符串作为输入。 我使用 fgets 接受输入:

    fgets(input, 100, stdin);
    input[strcspn(input, "\n")] = 0; // Trim trailing newline added by fgets

获得输入后,您可以轻松地使用 strtok 获取第一个和其他参数字符串,如下所示:

    // Get First
    char *token = strtok(input, delimiter);
    // Copy token to first
    strcpy(first, token);

    // Get Args
    while (token != NULL) {
        token = strtok(NULL, delimiter);
        if (token != NULL) {
            // copy token to args[] array
            strcpy(args[nArgs], token);
            nArgs++;
        }
    }

我用这段代码测试了它,它似乎工作正常:

c-posts : $ gcc strtokscanstring.c 
c-posts : $ ./a.out 
check hello world
first: check
nArgs: 2
arg[0] = hello
arg[1] = world

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM