这里的任务是在使用指针时将第一个n
字符从(null终止)string2(s2
)复制到s1
。我知道如何将字符串从一个复制到另一个,但我遇到了消除额外值的问题。例如:
s1= 'This is a test'
s2 = 'A test'
after copying, I am left with:
s1 = 'a tests a test'
这是我的代码:
char *s1pointer;
const char *s2pointer;
int i;
int number_char_replace;
s1pointer = s1;
s2pointer = s2;
i=0;
number_char_replace = num;
for(i=0;s1pointer[i] !='\0'||s2pointer[i]!='\0';i++)
{
s1pointer[i]=s2pointer[i];
}
}
这是家庭作业,所以请不要觉得有必要给我答案。对逻辑的暗示将不胜感激。谢谢。
答案 0 :(得分:6)
你需要以某种方式指出for之后字符串的结尾。扰流器:
s1pointer[i] = 0;
答案 1 :(得分:2)
三个问题:
代码完成后,目标字符串不会终止。例如,当您尝试打印字符串时,这可能会导致问题。此外,当您在较大的字符串上复制较小的字符串时,将无法知道新内容的结束位置以及旧内容的继续位置。
我理解您在s2pointer[i] !='\0'
循环中测试for
的原因;你想在源字符串用尽时停止。但为什么s1pointer[i] !='\0'
呢?你需要它吗?在复制开始之前,您对s1
包含的内容一无所知吗?
您说您想要复制n
个字符。你的代码在哪里?