gpt4 book ai didi

c++ - STRCAT 同时改变两个变量

转载 作者:搜寻专家 更新时间:2023-10-31 00:13:17 25 4
gpt4 key购买 nike

我有一段代码出现故障,我不知道它是如何做的。

我想做的是:

  1. 有一个函数接收目录名path和文件名filename
  2. 将这 2 个复制到另一个变量 caminho
  3. 将文件从当前目录复制到收到的目录。

我的问题代码的功能是:

void fileTransfer(const char* filename, const char* path, bool ts)
{
std::cout << filename << std::endl;
char *caminho;
caminho[0] = '\0';
std::cout << "0 " << caminho << ' ' << filename << std::endl;
strcat(caminho, path);
std::cout << "1 " << caminho << ' ' << filename << std::endl;
strcat(caminho, "\\");
std::cout << "2 " << caminho << ' ' << filename << std::endl;
strcat(caminho, filename);
std::cout << "3 " << caminho << ' ' << filename << std::endl;

//does the rest
}

这段代码应该做的是打印这样的东西:

file.txt
0 file.txt
C:\Users\Username file.txt
C:\Users\Username\ file.txt
C:\Users\Username\file.txt file.txt

但是这段代码实际打印出来的是这样的:

file.txt
0
C:\Users\Username C:\Users\Username
C:\Users\Username\ C:\Users\Username\
C:\Users\Username\C:\Users\Username\C C:\Users\Username\C:\Users\Username\C

此外,在所有这些 strcat 之前,我已经打印了 filename 并且它是正确的。谁能看出这段代码有什么问题?

最佳答案

caminho 没有指向任何地方。您正在覆盖随机内存。

为什么还要使用 C 字符串操作?使用 std::string

关于c++ - STRCAT 同时改变两个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27423522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com