【发布时间】:2016-07-17 14:32:33
【问题描述】:
定义函数 char * filename (char * file, int num) 要求:输入文件名:test.txt 1 输出:test_1.txt 输入:测试 输出: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)。另外,请解释到底是什么问题。将您的代码连同标题中的“我想要”一起转储到此处,对于展示您在问题上的努力,或者甚至在解释问题到底是什么(即,是什么让您认为你的代码不够快)! -
return -1不好,我想实现参数错误然后退出。
-
您找到了字符串终止符,您可以在其中找到
strcpy(buf,"_1");,但您调用strcat,它将重新寻找字符串终止符。 -
始终检查 (!=NULL) 来自
strtok()的返回值,以确保操作成功。你怎么知道file指向的缓冲区数组中有足够的空间来容纳新字符。 -
函数你熟悉吗:
basename()?