#c #wget
#c #wget
Вопрос:
Итак, у меня есть несколько URL-адресов, хранящихся в массиве указателей символов, называемом url
Я хочу вызывать wget для каждого URL-адреса, но я продолжаю получать следующую ошибку.
invalid operands to binary (have 'char *' and 'char *')
Моя программа написана на C
system("wget" url[0]);
Комментарии:
1. я думаю, что c не поддерживает эту конкатенацию. Вам следует использовать
system(strcat("wget", url[0]))
.2. codeomnitrix, ваш код вызывает UB —
strcat
ожидает, что в буфере назначения будет достаточно места для добавления источника. Не могли бы вы, пожалуйста, отредактировать его или преобразовать в ответ вместо этого?
Ответ №1:
В 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 */
Ответ №2:
В 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 ('') 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.
Поиск в Google «strncat» даст вам множество примеров того, как он используется.