当我运行我的程序时,我收到错误消息。我不知道如何纠正它。我可以得到帮助吗?
char dir[1024]="C:\\Users\\UserName\Desktop\\new folder\\Pauli\\T3";
void check_dir(char *dir)
{
int i;
i = 0;
while (dir[i] != '\0') {
if (dir[i] == '/')
dir[i] = '\\';
i++;
}
strcat_s(dir, sizeof(dir),"\\");
}
答案 0 :(得分:1)
sizeof(dir)
并没有做你在此明显期待的事情。由于dir
是函数内部的char *
,它只是给出了指针(*)的大小。您唯一的选择是将数组的大小传递给check_dir()
函数:
void check_dir(char *dir, size_t bufsize)
{
[...]
strcat_s(dir, bufsize, "\\");
}
(*)在声明目录char dir[1024]
的范围内,sizeof(dir)
将为您提供预期的结果。
编辑:在旁注中,check_dir()
在这里用词不当,因为它不会检查任何内容,但会尝试规范化字符串是一个带反斜杠的Windows路径。称它为例如win32_normalize_path()
或类似的东西。名为check_<foo>()
的内容应返回包含检查结果的内容(例如int
)。