Определенная функция char * имя файла (char * файл, int num) Требования: Введите имя файла: test.txt 1 Вывод: test_1.txt Ввод: test Вывод: test_1
Вот мой код
char *filename(char *file, int num)
{
if(NULL == file || num <= 0)
{
printf("parameter error\n");
return -1;
}
char *buf = file, *ptr1, *ptr2, *ptr3;
char temp[num];
while (*buf != '.' && *buf != '\0')
{
buf++;
if(*buf == '\0')
{
strcat(file ,"_1");
return 0;
}
}
ptr1 = strtok(file, ". ");
ptr2 = strtok(NULL, ". ");
ptr3 = strtok(NULL, ". ");
strcpy(temp, ptr2);
strcat(file, "_");
strcat(file, ptr3);
strcat(file, ".");
strcat(file, temp);
return 0;
}
return -1
? Конечно, вы можете придумать что-то более подходящее для возврата сюда (или изменить прототип функции, чтобы он возвращалint
). Также, пожалуйста, объясните, в чем именно проблема. Выводить здесь свой код вместе с Я хочу в заголовке — это очень плохой способ продемонстрировать свои усилия по решению проблемы или даже объяснить, в чем именно заключается проблема (т. е. что заставляет вас думать, что ваш код недостаточно быстро)! - person barak manos   schedule 17.07.2016strcpy(buf,"_1");
, но вы вызываетеstrcat
, который будет искать терминатор строки снова и снова. - person Weather Vane   schedule 17.07.2016strtok()
, чтобы убедиться, что операция прошла успешно. Откуда вы знаете, что в массиве буферов, на который указываетfile
, достаточно места для хранения новых символов. - person user3629249   schedule 17.07.2016basename()
? - person user3629249   schedule 17.07.2016