如何使用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函数才能接收分离的值
答案 0 :(得分:0)
首先使用strtok
(或strtok_r
)将C字符串转换为字符串数组。然后将其传递给getopt
。 getopt
仅使用argc
和argv
,因为这是您传递的内容。
如果你需要关注引用(想想是否
)hello "foo bar" baz
有三个参数或两个),那么您可能需要查看wordexp
,或者如果您使用的是glib
,g-shell-parse-argv