gpt4 book ai didi

c - 字符串C上的getopt()

转载 作者:行者123 更新时间:2023-11-30 19:44:27 24 4
gpt4 key购买 nike

如何使用C在字符串上实现类似getopt()的函数?

我目前正在应用

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <strings.h>
#include <fcntl.h>


int main(int argc, char **argv){

int ch,fd;
char *ip;
char *port;
char *user;
char message[100];
message = "_connect -i 127.0.0.1 -p 1234 -u hello1";

while ((ch = getopt(argc, argv, "i:p:u:")) != -1) {
switch (ch) {
case 'i':
if ((fd = open(optarg, O_RDONLY, 0)) < 0) {
printf("my ip is: %s\n", optarg);

//ip = optarg;
}
break;

case 'p':
if ((fd = open(optarg, O_RDONLY, 0)) < 0) {
printf("my port number is: %s\n", optarg);
//port = optarg;

}
break;

case 'u':
if ((fd = open(optarg, O_RDONLY, 0)) < 0) {
printf("my name is: %s\n", optarg);
//user = optarg;

}
break;
default:break;
}
}
argc -= optind;
argv += optind;
return 0;
}


我需要使消息完全充当参数,并让getopt函数接收单独的值

最佳答案

首先使用strtok(或strtok_r)将C字符串转换为字符串数组。然后将其传递给getoptgetopt仅使用argcargv,因为这就是您要通过的内容。

如果您需要关注报价(考虑是否

hello "foo bar" baz


有三个或两个参数),那么您可能要查看 wordexp,或者如果您使用的是 glibg-shell-parse-argv

关于c - 字符串C上的getopt(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28159547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com