История изменений
Исправление Pinkbyte, (текущая версия) :
pinkbyte@phantom ~/dev $ cat 1.c
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int fn(char **dst, char* src, int len) {
if (len<0)
return -1;
*dst=malloc(len+1);
strncpy(*dst,src,len);
}
int main() {
char *x;
fn(&x, "abcde", 2);
printf("%s\n",x);
return 0;
}
pinkbyte@phantom ~/dev $ gcc 1.c
pinkbyte@phantom ~/dev $ ./a.out
ab
Говнокод, набросанный меньше чем за минуту. Почему говнокод? Потому что выделять память по хорошему надо не в fn, а передавать уже готовый буфер, во избежании утечек при неаккуратном использовании. Ну и проверка результата работы malloc тоже отсутствует - не есть гуд. Однако переписывать мне влом, общий смысл посыла до тебя я думаю дойдет...
Зачем тебе городить огород при наличии стандартной функции копирования строк - я решительно не понимаю
Исправление Pinkbyte, :
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int fn(char **dst, char* src, int len) {
if (len<0)
return -1;
*dst=malloc(len+1);
strncpy(*dst,src,len);
}
int main() {
char *x;
fn(&x, "abcde", 100500);
printf("%s\n",x);
return 0;
}
Говнокод, набросанный меньше чем за минуту. Почему говнокод? Потому что выделять память по хорошему надо не в fn, а передавать уже готовый буфер, во избежании утечек при неаккуратном использовании. Ну и проверка результата работы malloc тоже отсутствует - не есть гуд. Однако переписывать мне влом, общий смысл посыла до тебя я думаю дойдет...
Зачем тебе городить огород при наличии стандартной функции копирования строк - я решительно не понимаю
Исходная версия Pinkbyte, :
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int fn(char **dst, char* src, int len) {
if (len<0)
return -1;
*dst=malloc(len+1);
strncpy(*dst,src,len);
}
int main() {
char *x;
fn(&x, "abcde", 100500);
printf("%s\n",x);
return 0;
}
Говнокод, набросанный меньше чем за минуту. Почему говнокод? Потому что выделять память по хорошему надо не в fn, а передавать уже готовый буфер, во избежании утечек при неаккуратном использовании.
Зачем тебе городить огород при наличии стандартной функции копирования строк - я решительно не понимаю