| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 459 人关注过本帖, 1 人收藏
标题:这串代码在运行的时候总是不对,请大家帮我看看那里的问题(返回文件名的扩 ...
只看楼主 加入收藏
es小涛
Rank: 2
等 级:论坛游民
帖 子:10
专家分:13
注 册:2014-12-17
结帖率:66.67%
收藏(1)
 问题点数:0 回复次数:9 
这串代码在运行的时候总是不对,请大家帮我看看那里的问题(返回文件名的扩展名)
#include "stdio.h"
char *getFileExtName(char *filename)
{
    char str[10];
    int c=0;
    while(*filename!=NULL)
    {
        filename++;
        if(*filename=='.')
        {
            filename++;
            while(*filename!=NULL)
            {
                str[c++]=*filename;
            }
        }
    }
      str[c]='\0';
      return  str;
}
void main()
{
    char a[100],*p;
    printf("please input filename:");
    gets(a);
    p=*getFileExtName(a);
    for(;*p!=NULL;p++)
        printf("%c",*p);
}
搜索更多相关主题的帖子: include please return 扩展名 
2015-01-06 20:14
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
程序代码:
#include <stdio.h>

char ext[100], *pExt = ext;

void getFileExtName(char *filename) {

    while(*filename != '.') {
        ++filename; 
    }
    pExt = ++filename;
}

int main(void) {
    char filename[100];
    printf("please input filename: ");
    fgets(filename, 100, stdin);
    getFileExtName(filename);
    puts(pExt);
    
    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2015-01-06 20:54
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
先想清楚文件的扩展名怎么判断、文件名有可能是怎样的、各种情况下应该是什么结果,再想自己的处理算法是不是适应所有的情形。

授人以渔,不授人以鱼。
2015-01-06 23:12
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用TonyDeng在2015-1-6 23:12:29的发言:

先想清楚文件的扩展名怎么判断、文件名有可能是怎样的、各种情况下应该是什么结果,再想自己的处理算法是不是适应所有的情形。

程序代码:
#include <stdio.h>
#include <string.h>

char *getFileExtName(char *filename)
{
    int len = strlen(filename) - 1;
    int i = len;
   
    if (filename[i] == '.')
    {
        return NULL;
    }

    while (i >= 0)
    {
        if (filename[i] == '.')
        {
            return (filename + i + 1);
        }
        --i;
    }
    return NULL;
}

#define N 1000

int main(void)
{
    char filename[N];
    printf("呵­呵: ");
    scanf("%s", filename);
    char *ext = getFileExtName(filename);
    if (ext != NULL)
    {
        printf("%s\n", ext);
    }
    else
    {
        printf("ERROR.\n");
    }
  
    return 0;
}


包括了 无后缀(emacs) 和 多个后缀(.emacs.el)

两种情况

刚才说错了 纠正一下


[ 本帖最后由 zklhp 于 2015-1-6 23:31 编辑 ]
2015-01-06 23:25
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
系统认的文件扩展名,只是右边最后一个句号之后的部分,如果一个句号也没有,就是无扩展名的。

授人以渔,不授人以鱼。
2015-01-06 23:28
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
其实取文件的扩展名很简单:用strrchr()函数定位最后一个句号,如果函数返回的指针非空,那么取这个指针后面一个字符作为扩展名字符串的入口即可,如果函数返回的指针为空,直接返回文件名字符串的'\0'字符指针(那是空串)。

授人以渔,不授人以鱼。
2015-01-06 23:45
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
我只按楼主的意图考虑最简单常见的情况
你们把这个问题搞得这么复杂……

Only the Code Tells the Truth             K.I.S.S
2015-01-06 23:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
也没多少复杂,一行代码的事。

授人以渔,不授人以鱼。
2015-01-06 23:56
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
//对你代码做如下修改即可正常输出.后面字符
#include "stdio.h"
char *getFileExtName(char *filename)
{
    char str[10];
    int c=0;
    while(*filename!=NULL)
    {
        filename++;
        if(*filename=='.')
        {
            filename++;
            while(*filename!=NULL)
            {
                str[c++]=*filename;  
                filename++;    //指针必须加,否则死了
            }
        }
    }
      str[c]='\0';
      return  str;
}
void main()
{
    char a[100],*p;
    printf("please input filename:");
    gets(a);
    p=getFileExtName(a);  //指针对指针,直接赋值即可
        printf("%s",p);   //用输出字符串格式
}

能编个毛线衣吗?
2015-01-07 00:02
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用longwu9t在2015-1-6 23:48:31的发言:

我只按楼主的意图考虑最简单常见的情况
你们把这个问题搞得这么复杂……

但有明显Bug的时候我肯定要说的呦 至少你也要告诉楼主呀 顺便 新的一天要重申一下我的理想 大声说


呵­呵
2015-01-07 00:04
快速回复:这串代码在运行的时候总是不对,请大家帮我看看那里的问题(返回文件名 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019873 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved