我收到错误消息:表达式:(L“字符串不是空终止”&& 0)

时间:2015-10-03 07:56:51

标签: c

当我运行我的程序时,我收到错误消息。我不知道如何纠正它。我可以得到帮助吗?

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),"\\");
}

1 个答案:

答案 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)。