int main(int argc, char* argv[]) 改为bai
int CopyFile(int argc, char *argv[])
调用时可以这样
char *argv[4] = {““shu, "SrcFile", "DestFile"} //char *argv[] = {““, "C:\\Path\\SrcFile", "D:\\Path\\DestFile"}
CopyFile(3, argv);
如果动态赋值,则需要给每个指向指针的指针申请内存,否则会变成野指针,例如调用tinyplay.c播放wav文件:
char *strargv[4];
char argv0[256];
char argv1[256];
char argv2[256];
char argv3[256];
strargv[0]=argv0;
strargv[1]=argv1;
strargv[2]=argv2;
strargv[3]=argv3;
sprintf(strargv[1], "-D");
sprintf(strargv[2], "1");//第1块声卡,根据开发板的不同,选择不同数字。例如:树莓派4B耳机接口是1,默认的声卡0是HDMI接口
sprintf(strargv[3], "%s/%s/%s", SOUND_PATH, mLanguageDir_str.c_str(), ite->second.c_str());
#else
char *strargv[3] = {"","-D 2", "wav/cn/lowbattery.wav"};//test only
// char *strargv[3] = {"peng.c","dong","lin.txt","pengdonglin137@163.com"};
#endif
tinymain(3, strargv);
main(int argc, char *argv[])的使用
#include <stdio.h>
int main(int argc, char *argv[])
{
int i;
printf("argc=%d\n",argc);
for(i=0; i<argc; i++)
{
printf("argv[%d]-->%s\n",i,argv[i]);
}
return 0;
}
说明:argc是输入参数的个数,argv是一个指针数组。上面的函数相当于:
char *argv[argc] = {"peng.c","dong","lin.txt","pengdonglin137@163.com"};
也可以写成
int main(int argc, char **argv)
用于文件拷贝一例:
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int src;
int dist;
int ch;
char ch2[100];
int n;
if(argc != 3)
{
printf("input error!\n");
}
if((src = open(argv[1],O_RDONLY)) == -1)
{
fprintf(stderr,"%s\n",strerror(errno));
return -1;
}
if((dist = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, 0666)) == -1)
{
fprintf(stderr,"%s\n",strerror(errno));
return -1;
}
while((n = read(src,ch2,sizeof(ch2))) != 0)
{
write(dist, ch2, n);
}
fprintf(stderr,"%s\n",strerror(errno));
close(src);
close(dist);
return 0;
}
实现功能:将文件peng.txt中的内容拷贝到dong.txt中。