QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1051|回复: 3

c代码, 很疑惑!

[复制链接]
发表于 2006-1-7 19:14:03 | 显示全部楼层 |阅读模式
收集了很图片, 文件名乱糟糟的, 所以有了下面的代码. 问题在注释那段, 很疑惑不解, 希望有谁能帮我解答一下, 感谢!

#include<stdio.h>
#include<string.h>
#include<dirent.h>
#include<unistd.h>

main(int argc, char **argv)
{
        DIR *dir;
        struct dirent *file;
        char oldname[256];
        int i = 'a', j = 'a';
        char *tmp;

        tmp = *++argv;  //为什么我把这行删除, 再把下面的tmp改成*++argv就不行了呢, 这两种写法不是等价的吗?郁闷………~~~!
        dir = opendir (tmp);
        chdir (tmp);
        while (file = readdir(dir)) {
                strcpy (oldname, file->d_name);
                if (strcmp(file->d_name, ".") != 0 && strcmp(file->d_name, "..") != 0) {
                        while (j <= 'z') {
                                file->d_name[0] = i;
                                file->d_name[1] = j;
                                file->d_name[2] = '\0';
                                strcat (file->d_name, ".jpg");
                                rename (oldname, file->d_name);
                                j++;
                                break;
                        }
                        if (j > 'z') {
                                i++;
                                j = 'a';
                        }
                }
        }
        closedir (dir);
}
发表于 2006-1-7 20:39:33 | 显示全部楼层
=====================================================================
tmp = *++argv; //为什么我把这行删除, 再把下面的tmp改成*++argv就不行了呢, 这两种写法不是等价的吗?郁闷………~~~!
dir = opendir (tmp);
chdir (tmp);
=====================================================================
这里有一点是不一样的,
如果是tmp=*++argv; 则argv在这里只是增加一次,下面两行语句引用的都是tmp,在这两行语句中tmp的值是相等的。

若把
      dir = opendir (tmp);
      chdir (tmp);
中的tmp全部用*++argv来代替,
那么在
      “dir = opendir (*++argv); ”
这一行argv要增加一次;
而在运算到
      “chdir (*++argv);”
时argv在这里还要运算一次,这种情况下两行语句里面的“*++argv”就不是同一个值了;因此会出现错误。
回复

使用道具 举报

 楼主| 发表于 2006-1-7 20:59:00 | 显示全部楼层
对喔!~~~~~~~晕了~晕了~~多谢解晕, 多谢解晕!!   
回复

使用道具 举报

发表于 2006-1-8 10:22:33 | 显示全部楼层
拜托先看看置顶通告
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-3 00:26 , Processed in 0.084440 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表