Я получаю пакеты TFTP (запросы на чтение), используя recvfrom с буфером 512 байт.
Строка (имя файла для передачи) начинается с третьего байта буфера. Первые два зарезервированы для кода операции.
Я написал следующую функцию:
char * parseFileName(char * buffer){
char * filename;
for(int i = 0; buffer[i] != '\0'; i++)
*(filename + i) = buffer[i];
*(filename + i) = '\0';
return filename;
}
и я называю это с учетом смещения кода операции:
char * filename = parseFileName(buffer + 2);
Однако это не работает, и программа останавливается:
printf("%s", filename);
Если я не добавлю это:
printf("\n");
прямо перед оператором return в функции parseFileName. Только тогда я могу напечатать строку имени файла в вызывающей функции.
Почему это происходит?
filename
, на которое он мог бы указывать. - person Barmar   schedule 19.09.2015strcpy(filename, buffer)
. - person Barmar   schedule 19.09.2015