Код компилируется и работает очень хорошо, если только я не укажу только одну опцию командной строки, тогда это будет segfaults.C - Дефект сегментации с argv
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
void printHelp()
{
printf("Usage: fstring [ char ] [ amount ] Optional:[ outfile ]\n"
"Example: fstring A 100 out.txt\n");
exit(1);
}
char *f_string(const char *s, int t)
{
int i; char *dst = malloc(t * strlen(s) + 1);
for(i = 0; i < t; i++) {
strcat(dst, s);
}
return dst;
}
int main(int argc, char *argv[])
{
if(argc < 2) {
printf("You need at least two arguments!\n");
return 1;
}
char *res = f_string(argv[1], atoi(argv[2]));
puts(res);
free(res);
return 0;
}
Как я уже сказал, если я дам ему два аргумента, он работает, и если я не дам ему ни он выводит сообщение об ошибке, но придав ему только один вызывает Segfault. Я не понимаю, почему.
пут '* ДСТ = 0 ', прежде чем для петли на' f_string ' – BLUEPIXY