【发布时间】:2018-03-21 05:49:39
【问题描述】:
我正在用 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;
}
Q1:如何在不崩溃的情况下将 src 处的取消引用值分配给目标?
Q2:如果我需要将输入的tmp 字符串复制到一个新字符串中,我该怎么做?我似乎无法将tmp 作为第二个参数传递
【问题讨论】:
-
无法重现错误。请包含您的编译器并展示您如何使用
strcopy。 -
我们需要查看调用您的
strcopy函数的代码以及它为dest参数分配的参数值。 -
您无需致电
strlen- 您只需检查*src == '\0'并停止循环。 -
请提供A Minimal, Complete, and Verifiable Example (MCVE)。我怀疑你的
dest可能是调用者中未初始化的指针。 -
最后,“at this line program breaks”不是一个有用的评论,请准确描述“breaks”。