问如何调用system当执行命令的参数(文件名等)在运行时才能确定?
答只需使用sprintf(或者也许是strcpy和strcat)在缓冲区中构建命令字符串,然后调用system使用该缓冲区。(请确保缓冲区已分配足够的空间;另请参见问题 7.2 和 12.21。)
这是一个臆造的例子,说明如何构建一个数据文件,然后对其进行排序(假设存在一个排序实用程序,以及类 Unix 或 MS-DOS 的输入/输出重定向)。
char *datafile = "file.dat"; char *sortedfile = "file.sort"; char cmdbuf[50]; FILE *fp = fopen(datafile, "w"); /* ...write to fp to build data file... */ fclose(fp); sprintf(cmdbuf, "sort < %s > %s", datafile, sortedfile); system(cmdbuf); fp = fopen(sortedfile, "r"); /* ...now read sorted data from fp... */
另请参见问题 12.28b。