[英]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.