gpt4 book ai didi

c - 如何处理来自getopt的字符

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:14 25 4
gpt4 key购买 nike

我不确定我哪里不见了。我想从命令行捕获一些字符。我正在使用 getopt 但不确定如何从 optarg 复制。请帮助我,我不太确定 c 中的字符/字符串处理。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <getopt.h>

main(int argc , char *argv[]) {
char *file;
int opt;
while ( ( opt = getopt(argc, argv, "f:") ) != -1 ){
switch(opt){
case 'f':
file=(char *) malloc(2);
strcpy(file,optarg);
printf("\nValue of file is %c\n",file);
break;
default :
return(1);
}
}
return(0);
}

最佳答案

要修复@claptrap 建议的错误,请替换:

file=(char *) malloc(2);
strcpy(file,optarg);

更安全:

file = strdup(optarg);

它会自动为你分配和复制字符串,无论它有多长。您在 string.h 中定义了 strdup,您已经包含了它。

使用文件字符串后,您应该使用以下方法将其从内存中释放:

free(file);

Strdup manpage .另请查看 strncpy使用起来比 strcpy 更安全的函数,因为它知道在溢出之前可以将多少字符复制到目标缓冲区中。

关于c - 如何处理来自getopt的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17776573/

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