开发者

System wget of a variable type

So, I have several url's stored in a char pointer array called url

I want to call wget on each url, but I keep getting the following error.

invalid operands to binary + (have 'char *' and 'char *')
开发者_JS百科

My program is in C

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


In C, the + operator does not work on strings. To concatenate two strings and pass the result to system() you can do the following:

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 */


In C, you can't concatenate two strings using the + operator. Use strncat instead:

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.

Googling "strncat" will give you plenty of examples of how it's used.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜