1

此处的任务是在使用指针时将n(以空终止的)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];
}
}

这是作业,所以请不要只给我答案。逻辑提示将不胜感激。谢谢你。

4

2 回答 2

6

您需要在 for 之后以某种方式指示字符串的结尾。剧透:

s1pointer[i] = 0;

于 2013-09-02T18:56:47.753 回答
2

三个问题:

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

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

  3. 你说你想复制到n字符。那在哪里,在你的代码中?

于 2013-09-02T19:03:24.353 回答