Когда я пытаюсь создать TXT-файл в определенном каталоге, в конце появляются ненужные символы - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь создать файл в каталоге, и в конце появляются ненужные символы, вот мой код: когда файл создается, после .txt

char *path=strdup(argv[1]);//argv[1] is a number from 1-9
strcat(path,"/mynewfile.txt");
FILE *f=fopen(path,"w");
.....
fclose(f);
появляются некоторые ненужные символы

1 Ответ

4 голосов
/ 12 апреля 2019

strdup делает копию данного массива символов. Он только выделяет достаточно памяти для хранения этой строки. Вы не можете strcat ничего с ним сделать, так как это выходит за пределы и происходит неопределенное поведение.

Вам нужно выделить достаточно памяти для всей строки, затем strcpy первой части и strcat последней. Только так определяется поведение.

Например:

char path[256];
strcpy(path, argv[1]);
strcat(path,"/mynewfile.txt");
FILE *f=fopen(path,"w");

Обратите внимание, что вы все равно должны убедиться, что выделенной памяти достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...