| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4253 人关注过本帖
标题:命令行函数理解问题(*++argv)[0] 和 *++argv[0] )
取消只看楼主 加入收藏
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
结帖率:97.5%
收藏
已结贴  问题点数:20 回复次数:12 
命令行函数理解问题(*++argv)[0] 和 *++argv[0] )
    while (--argc > 0 && (*++argv)[0] == '-')
        while( c = *++argv[0])


(*++argv)[0] == argv[1][0] == *(argv + 1) [0]   就是第二行首字符
*++argv[0] ==   argv[0][1] == *(argv[0] + 1)    就是第一行第二列。就是这个指针纠结了很久。貌似我这样理解程序就是错误的,大牛帮忙指点下

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

#define MAXLINE 1000

int getline(char *s, int max);

int main(int argc, char *argv[])
{
    char line[MAXLINE];
    long lineno = 0;
    int c, except = 0, number = 0, found = 0;
    int i = 0;

    while (--argc > 0 && (*++argv)[0] == '-')
        while( c = *++argv[0])
            switch (c)
            {
            case 'x' :
                except = 1;
                break;
            case 'n' :
                number = 1;
                break;
            default :
                printf("find : illgal option %c\n", c);
                argc = 0;
                found = -1;
                break;
            }
    if (argc != 1)
        printf("Usage : find -x -n pattern\n");
    else
        while (getline(line, MAXLINE) > 0)
        {
            lineno++;
            if ((strstr(line, *argv) != NULL) != except)
            {
                if (number)
                    printf("%ld", lineno);
                printf("%s", line);
                found++;
            }
        }
    return found;
}
搜索更多相关主题的帖子: color 
2017-05-13 00:02
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 2楼 wp231957
图片附件: 游客没有浏览图片的权限,请 登录注册

不知道*++argv  怎么取到字符串abc 中的b和c没明白运算过程
2017-05-13 08:57
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 3楼 renkejun1942
不知道*++argv[0]  怎么取到abc中的b c
2017-05-13 08:59
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 9楼 renkejun1942
运算顺序都知道。
我想知道++(argv[0])是什么?
然后 *(++(argv[0]))又是什么?
你说单独一句 *++argv[0] == argv[0][0] 成立吗?
反正想了很多就是不理解*++argv[0]到底怎么进行运算的
2017-05-13 10:45
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 8楼 wp231957
你说的很好理解。谢谢。我只想知道那一句怎么进行运算的。
2017-05-13 10:47
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 16楼 renkejun1942
图片附件: 游客没有浏览图片的权限,请 登录注册

*++argv[0];
测试了结果不一样,但是会输出YES。醉了。
结果:YES\ :

[此贴子已经被作者于2017-5-13 11:08编辑过]

2017-05-13 10:57
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 18楼 wp231957
你又偷偷上网打游戏不学好
2017-05-13 11:04
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 21楼 九转星河
我草,你们还在讨论这个,帖子都要被你俩盖完了
2017-05-13 11:12
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 16楼 renkejun1942
你再帮我解释下argv[1][1]怎么来的,转不过来了
(*++argv)[0] == *(argv[0] + 1)[0] == argv[1][0];
*++argv[0] == *(argv[0] + 1) == argv[1] == argv[1][0];

怎么得来argv[1][1] argv[1][2] 这个地方看了几个小时了。太浪费时间了。蛋疼  
2017-05-13 11:25
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 25楼 renkejun1942
我日哦。昨天晚上到今天上午就在理解这行代码,还输没搞清楚。虽说是个实例代码,但是理解了的话,指针就又掌握了一点。学c本来指针就很重要的。你再看看能不能想出来是咋回事。现在我脑袋已经成豆腐渣了
2017-05-13 11:31
快速回复:命令行函数理解问题(*++argv)[0] 和 *++argv[0] )
数据加载中...
 
   



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

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