Я получаю ошибку сегментации при попытке объединить строки. Целью кода является создание 1000 файлов каждый с возрастающими именами hw7-1.data, hw7-2.data и т. Д., Пока вы не дойдете до hw7-999.data. Это должно быть более тривиально, чем я это делаю, и единственная причина, по которой это происходит, заключается в том, что строка назначения выходит за границы, но я просто не вижу ее. У меня есть пара дополнительных включений, которые я знаю, но кроме того, я не понимаю, почему это происходит на первой strcat. Любые мысли как тОшибка сегментации с помощью strcat()
Выход:
Здесь
Seg Fault
#include<stdio.h>
#include<string.h>
#include<pthread.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/stat.h>
int main(void)
{
int x;
char* number;
number=malloc(10);
char* filename;
filename=malloc(100);
char* end;
end=malloc(10);
for (x=0; x<1000; x++)
{
filename="./hw7-";
sprintf(number, "%d", x);
printf("%s\n", number);
printf("Here \n");
strcat(filename,"1");
printf("Here \n");
strcat(filename,".data");
printf("Here \n");
int fd2 = open(filename, O_RDWR | O_CREAT, S_IRUSR | S_IRGRP | S_IROTH);
}
}
'имя_файла =«./ hw7 -»;' не делать то, что вы думаете, что он делает. –
'filename =" ./ hw7 - ";' -> 'strcpy (filename,. ./hw7 -"); ' – BLUEPIXY
Лучше использовать' free' после 'malloc'. – Downvoter