2014-09-08 2 views
-2

Я новичок в программировании и в настоящее время изучаю C. Не могли бы вы помочь мне в решении нижеприведенного случая?Как отделить argv [] от ввода двух разных строк на C?

Примером этого будет, если пользователь вводит «cbamike», я хотел бы разделить его на две строки: cba и mike.

Я попытался ниже это код, но он не работает:

#include <stdio.h>; 

int main (int argc, string argv[]) 
{ 
    char* input[50] = argv[1]; 
    char* first[10]; 
    char* second[10]; 
    sprintf(first, "%c %c %c", input[0], input[1], input[2]); 
    sprintf(second, "%c %c %c %c", input[3], input[4], input[5], inpput[6]); 
    printf("%s\n", input); 
    printf("%s\n", first); 
    printf("%s\n", second); 
} 
+6

Тип данных 'string' недоступен в' C'. это недопустимый код 'C'. –

+1

Вам нужно выделить пространство для 'first' и' second', прежде чем вы сможете их записать. – Barmar

+0

Да, как мне добиться этого с помощью char * input? – Cusx

ответ

2

Там не находится в C не string, вы можете использовать strncpy, чтобы получить первые несколько символов, как aswered есть: Strings in c, how to get subString

int main (int argc, string argv[]) 
{ 
    char* input = argv[1]; 
    char first[4]; 
    char second[5]; 

    strncpy(first, input, 3); 
    strncpy(second, input + 3, 4); 

    first[3] = second[4] = '\0'; 
} 
+1

Спасибо, что это тоже работает! :) – Cusx

+0

@Cusx приветствую :) –

1
#include <stdio.h> 
#include <string.h> 

int main (int argc, char* argv[]) 
{ 
    if(argc >= 2) 
    { 
     const int len = strlen(argv[1])/2; 
     char str1[len + 2], str2[len + 2]; 
     snprintf(str1, len + 1, "%s", argv[1]); 
     snprintf(str2, len + 2, "%s", argv[1] + len); 
     printf("1: %s\n2: %s\n", str1, str2); 
    } 
    return 0; 
} 
+0

Спасибо, что это работает! :) – Cusx