C:不使用内置函数将较短的字符串复制到更长的字符串

时间:2013-09-02 18:55:37

标签: c string

这里的任务是在使用指针时将第一个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];
}
}

这是家庭作业,所以请不要觉得有必要给我答案。对逻辑的暗示将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:6)

你需要以某种方式指出for之后字符串的结尾。扰流器:

  

s1pointer[i] = 0;

答案 1 :(得分:2)

三个问题:

  1. 代码完成后,目标字符串不会终止。例如,当您尝试打印字符串时,这可能会导致问题。此外,当您在较大的字符串上复制较小的字符串时,将无法知道新内容的结束位置以及旧内容的继续位置。

  2. 我理解您在s2pointer[i] !='\0'循环中测试for的原因;你想在源字符串用尽时停止。但为什么s1pointer[i] !='\0'呢?你需要它吗?在复制开始之前,您对s1包含的内容一无所知吗?

  3. 您说您想要复制n个字符。你的代码在哪里?