我是C的新手,我在使用程序将文件从一个硬盘驱动器传输到另一个硬盘时遇到了一些麻烦。程序将运行的PC没有任何类型的编译器,因此我希望在不需要重新编译程序的情况下构建源和目标路径的更改。目前的情况是,在当前目录中有两个文本文件 - 一个包含源路径,另一个包含目标。程序从这些文件中读取行,并使用这些相应的路径进行传输。
为了简化程序,为了保持程序连续运行(因为这是必需的),我设置了1秒循环,而不是使用系统线程。
我认为问题在于使用字符串变量作为系统命令中的目录路径 - 因为如果我在此命令中硬编码路径,则传输成功。在当前的安排中,我收到错误“文件名,目录名称或卷标语法不正确”。在我的程序中。有人有什么建议吗?我应该使用sprintf将文本文件中的行转换为字符串吗?
#include <stdio.h>
#include <time.h>
#include <string.h>
void delay(int seconds);
int main()
{
int x=1;
chdir("C:\\Users\\jw\\Documents\\");
FILE *file_src;
FILE *file_dst;
file_src=fopen("source_dir.txt","r");
file_dst=fopen("dest_dir.txt","r");
char message[150][150],buffer[150];
char* source_directory;
char* destination_directory;
fgets(buffer,150,file_src);
strcpy(message[1],buffer);
sprintf(data,"%s",message[1]);
source_directory=message[1];
fgets(buffer,150,file_dst);
strcpy(message[2],buffer);
sprintf(data2,"%s",message[2]);
destination_directory=message[2];
printf("source folder: %s \n",message[1]);
printf("destination folder: %s \n",message[2]);
for(x=1;x=1;x=1)
{
system("move *%s *%s",source_directory,destination_directory);
delay(1);
}
printf("/n")
return(0);
}
void delay(int seconds)
{
long pause;
clock_t now,then;
pause = seconds*(CLOCKS_PER_SEC);
now = then = clock();
while( (now-then) < pause )
now = clock();
}
答案 0 :(得分:1)
fgets
保留换行符,因此您的字符串变为:
move *source\n *dest\n
您需要从输入中删除尾随的\n
个字符。