测试扩展名是否一致

qhmilanista 2012-08-25 04:41:11

#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

#define N 10

void get_extension(const char *file_name, char *extension);
bool test_extension(const char *file_name, const char *extension);

int main(void)
{
char extension[N] = "TXT";
const char *file_name = "memo.txt";
bool final = test_extension(file_name, extension);
printf("%d\n", final);

return 0;
}

void get_extension(const char *file_name, char *extension)
{
int n = 0;
for(; *file_name != '\0'; file_name++){
if(*file_name == '.'){
n = 1;
break;
}
else
n = 0;
}
if( n == 1){
file_name++;
extension = malloc(strlen(file_name));
if(extension == NULL){
printf("Error,malloc failed\n");
exit (EXIT_FAILURE);
}
strcpy(extension, file_name);
}
else{
extension = malloc(strlen(file_name));
if(extension == NULL){
printf("Error,malloc failed\n");
exit (EXIT_FAILURE);
}
extension = '\0';
}
}


bool test_extension(const char *file_name, const char *extension)
{
char *ex, up[N];
ex = malloc(strlen(file_name));
if(ex == NULL){
printf("Error,malloc failed\n");
exit (EXIT_FAILURE);
}
int t = 0;
get_extension(file_name, ex);
int i;
for(i = 0; ex[i] != '\0'; i++)
up[i] = toupper(ex[i]);

int deci = strcmp(up, extension);
if(deci == 0)
return true;

return false;
}




为什么测试失败,是0---false
在下就是想file_name指向包含文件名的字符串。如果文件的扩展名与extension指向的字符串匹配(不区分大小写),函数返回true。例如,函数调用test_extension("memo.txt", TXT)将返回true
...全文
130 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧