x264.c中:
static int Parse( int argc, char **argv,
x264_param_t *param, cli_opt_t *opt )
{
char *psz_filename = NULL; /* 用来存解析到的文件名 */
char *psz;
psz_filename = argv[optind++]; /* 文件名 */
psz = psz_filename + strlen(psz_filename) - 1;
while( psz > psz_filename && *psz != '.' )
{
psz--; /* psz是什么类型啊,怎么--了 */
}
这儿很乱啊
psz_filename 是char *
psz 是char *
psz = psz_filename + strlen(psz_filename) - 1; //这句和unsigned int 相加, 和1相减
那psz是char * , 右边是 char * + unsigned int - int
这个结果就算不出错,也没什么用啊,奇怪,从后续代码看来,这个while循环是取文件名的后缀,即点及点后面的部分。
但是要取后缀,完全不用这样麻烦啊,
#include "stdafx.h" int main(int argc, char* argv[])
printf("Hello World!\n"); |
int main(int argc, char* argv[]) psz_filename = "abc.avi"; while( psz > psz_filename && *psz != '.' )
|
运行效果如图:
|
#include "stdafx.h" int main(int argc, char* argv[]) psz_filename = "abc.avi"; printf("psz_filename = %s\n",psz_filename); printf("-------------------------\n"); while( psz > psz_filename && *psz != '.' ) printf("-------------------------\n");
|
去掉while与psz--之间的print:
|