Системный wget переменной типа - PullRequest
0 голосов
/ 19 мая 2011

Итак, у меня есть несколько URL-адресов, хранящихся в массиве указателей символов с именем url

Я хочу вызывать wget для каждого URL, но получаю следующую ошибку.

invalid operands to binary + (have 'char *' and 'char *')

Моя программа на C

system("wget" + url[0]);

Ответы [ 2 ]

2 голосов
/ 19 мая 2011

В C оператор + не работает со строками.Чтобы объединить две строки и передать результат в system(), вы можете сделать следующее:

char buffer[ENOUGH_SPACE_TO_HOLD_CONCATENATED_RESULT];  /* Destination buffer for our command */
snprintf(buffer, sizeof(buffer), "wget %s", url[0]);    /* You can also use strcat and friends for this step */
system(buffer);                                         /* Now execute it */
0 голосов
/ 19 мая 2011

В C вы не можете объединить две строки, используя оператор +.Вместо этого используйте strncat:

NAME
       strcat, strncat - concatenate two strings

SYNOPSIS
       #include <string.h>

       char *strcat(char *dest, const char *src);

       char *strncat(char *dest, const char *src, size_t n);

DESCRIPTION
       The  strcat() function appends the src string to the dest string, over‐
       writing the null byte ('\0') at the end of dest, and then adds a termi‐
       nating  null  byte.   The  strings may not overlap, and the dest string
       must have enough space for the result.

       The strncat() function is similar, except that

       *  it will use at most n characters from src; and

       *  src does not need to be null-terminated if it  contains  n  or  more
          characters.

       As  with  strcat(),  the resulting string in dest is always null-termi‐
       nated.

       If src contains n or more characters, strncat() writes  n+1  characters
       to  dest  (n  from src plus the terminating null byte).  Therefore, the
       size of dest must be at least strlen(dest)+n+1.

Погуглив "strncat", вы получите множество примеров того, как его использовать.

...