我正在尝试使用命令提示符传递我的参数。
有 可以将3种不同的类型传递给我的程序:int,char,string。它适用于int和char,但是如果我传递字符串,我会遇到seg故障。
#include <stddef.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "MergeSort.h"
int main(int argc, char *argv[])
{
if (argc > 2){
if (strcmp(argv[1], "int") == 0){
cmp_t cmp = CompareInt;
int arr[argc - 2];
for(int i = 2; i < argc; i++) sscanf (argv[i], "%d", &arr[i - 2]);;
merge_sort(arr, argc - 2, sizeof(int), cmp);
for(int i = 0; i < argc - 2; i++) printf("%i ", arr[i]);
}
else if(strcmp(argv[1], "char") == 0){
cmp_t cmp = CompareChar;
char arr[argc - 2];
for(int i = 2; i < argc; i++) sscanf (argv[i], "%c", &arr[i - 2]);;
merge_sort(arr, argc - 2, sizeof(char), cmp);
for(int i = 0; i < argc - 2; i++) printf("%c ", arr[i]);
}
else{
cmp_t cmp = CompareStr;
char* arr[argc - 2];
for(int i = 2; i < argc; i++) sscanf (argv[i], "%s", arr[i - 2]);
merge_sort(arr, argc - 2, sizeof(char*), cmp);
for(int i = 0; i < argc - 2; i++) printf("%s ",arr[i]);
}
}
return 0;
}
答案 0 :(得分:1)
我可以简单地将指针从argv
复制到arr
,例如:arr[i-2] = argv[i]
;
第二种方法是为字符串分配内存。