gpt4 book ai didi

无法将 const char* 分配给 char*

转载 作者:行者123 更新时间:2023-12-02 08:08:23 24 4
gpt4 key购买 nike

我正在用 C 编写并且必须返回一个 char*我正在尝试复制 strcpy 函数。我有以下代码

int main() 
{
char tmp[100];
char* cpyString;
const char* cPtr = &tmp[0];

printf("Enter word:");
fflush(stdin);
scanf("%s", &tmp);

cpyString = strcpy("Sample", cPtr);

printf("new count is %d\n", strlen(cpyString));

}

int strlen(char* s)
{
int count = 0;

while(*(s) != 0x00)
{
count++;
s = s+0x01;
}
return count;
}

char* strcpy(char* dest, const char* src)
{
char* retPtr = dest;

int i =0;
int srcLength = strlen(src);

for(i = 0; i< srcLength; i++)
{
*(dest) = *(src); //at this line program breaks
dest = dest + 0x01;
src = src + 0x01;
}

*(dest) = 0x00; //finish with terminating null byte

return retPtr;
}

问题 1:如何在程序不崩溃的情况下将 src 中的取消引用值分配给目标?

Q2:如果我需要将输入的tmp字符串复制到一个新的字符串中,我该怎么做?我似乎无法将 tmp 作为第二个参数传递

最佳答案

这里

cpyString = strcpy("Sample", cPtr);
^^^^^^^
const

你已经交换了参数。第一个参数是不允许写入的字符串文字(“sample”)。参见 https://stackoverflow.com/a/4493156/4386427

尝试

cpyString = strcpy(cPtr, "Sample");

我不确定第二行是否正是您想要的,但至少它是合法的。

也许你真的想要:

cpyStringBuffer[100];
cpyString = strcpy(cpyStringBuffer, cPtr);

一般来说,main 中的代码比需要的更复杂。

尝试:

int main() 
{
char input[100] = {0};
char dest[100];

printf("Enter word:");
scanf("%99s", input); // notice the 99 to avoid buffer overflow

strcpy(dest, input);

printf("new count is %d\n", strlen(dest));

return 0;
}

关于无法将 const char* 分配给 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49399073/

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