【发布时间】:2017-11-06 03:25:55
【问题描述】:
我是 C 的新手,我正在开发一个实用程序,它可以扫描文件夹中的重复文件,然后对它们进行一些处理。当我有重复文件名列表时,我需要使用完整路径和文件名构建一个字符串来操作文件,但是每次尝试将 \ 附加到路径时都会出现错误,但错误不会如果我跳过 .这是问题代码的简化版本:
char *TARGET1 = ".";
char *TARGET2 = ".\\test";
char *PATH_SEP = '\\';
char *folder1_files[filecount1]; // These arrays are populated with file
char *folder2_files[filecount2]; // names elswhere in the code
int l = 0; // The counter for the loop that is comparing the filenames
char buffer[1024];
strcpy(buffer, TARGET2);
printf("Building the path now...\n");
//strcat(buffer, PATH_SEP);
strcat(buffer, folder2_files[l]);
printf("Path: %s\n", buffer);
如果我将底部的第三行注释掉,则程序完成并得到以下输出:
路径已建成! 路径:.\testfile3.txt
如果我取消注释,我会收到此错误:访问冲突读取位置 0x0000005C
谁能指出哪里出了问题?有没有更标准的 C 语言构建路径?
【问题讨论】:
-
在代码中的其他地方命名 ...在哪里?也张贴那个。改用
snprintf(),这样更简单、更干净。 -
欢迎来到 Stack Overflow。请尽快阅读 About 和 How to Ask 页面,但更重要的是,请阅读有关如何创建 MCVE (minimal reproducible example) 的信息。注意
char *folder1_files[filecount/];是一个语法错误;你的意思是filecount1? -
倒数第三行是 int l = 0 ;如果你评论它,它会在 strcat(buffer, folder2_files[l]); 处产生编译时错误。与 l 未定义
-
@JonathanLeffler 啊是的......那里有几个错别字。感谢您的反馈。
标签: c special-characters filepath strcat