字符串 C 上的 getopt()
getopt() on a String C
如何使用 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 字符串转换为字符串数组。然后将其传递给 getopt
。 getopt
只使用 argc
和 argv
因为那是你传递的。
如果您需要关心自己的引用(考虑是否
hello "foo bar" baz
具有三个或两个参数),那么您可能需要查看 wordexp
, or if you are using glib
, g-shell-parse-argv
如何使用 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 字符串转换为字符串数组。然后将其传递给 getopt
。 getopt
只使用 argc
和 argv
因为那是你传递的。
如果您需要关心自己的引用(考虑是否
hello "foo bar" baz
具有三个或两个参数),那么您可能需要查看 wordexp
, or if you are using glib
, g-shell-parse-argv