命令提示符下的字符串

时间:2016-10-06 01:45:09

标签: c string function command-line

我正在尝试使用命令提示符传递我的参数。

有 可以将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;
}

1 个答案:

答案 0 :(得分:1)

我可以简单地将指针从argv复制到arr,例如:arr[i-2] = argv[i];

第二种方法是为字符串分配内存。