找出题中错误,写出错误内容,并加以改正
找出题中错误,写出错误内容,并加以改正
# include<std io.h>
main()
{
char*sl={“This is”},*s2={ “a exam pie.”};
char*p;
p=sl;
for(;*(sl++)!=’\0’;);
while (*s2!=’\0’)
{
*sl=s2;
sl++;
}
*(sl-l)=’\0’;
printf(“ % s\n, “ sl);
}
问题点数:20、回复次数:6Top
1 楼robot_wind()回复于 2005-06-01 01:47:25 得分 5
死循环!
while (*s2!=’\0’)
{
*sl=s2;
sl++;
}
这里循环标志s2一直没有变化
改成
while (*s2!=’\0’)
{
*sl++=*s2++;
}
Top
2 楼jixingzhong(瞌睡虫·星辰)回复于 2005-06-01 08:48:23 得分 5
函数是合并字符串
# include<std io.h>
main()
{
char*sl={“This is”},*s2={ “a exam pie.”};
char*p;
p=sl;
for(;*(sl++)!=’\0’;);
while (*s2!=’\0’)
{
*sl=s2;
sl++;
s2++;
}
*sl=’\0’;
printf(“ % s\n, “ sl);
}
除了楼上所说的 ,还有*(sl-l)=’\0’语句,应该是*s1,不是*(s1-1)。因为指针刚好在串尾,不需要倒退。
Top
3 楼halibut(g3)回复于 2005-06-01 08:54:18 得分 5
# include<stdio.h> <<<<<<<<<-----
main() <<<<<<<<<默认返回 int, 结尾处未返回.
{
char*sl={“This is”},*s2={ “a exam pie.”};
char*p;
p=sl;
for(;*(sl++)!=’\0’;); <<<<<<<<<<死循环
while (*s2!=’\0’)
{
*sl=s2; <<<<<<<<<s1, s2 都是常量字符串指针, 非数组, 这样做会死掉的.
sl++;
}
*(sl-l)=’\0’; <<<<<<<不要 -1 .
printf(“ % s\n, “ sl); <<<<<<<s1 指在结尾, 打出空串.
}
Top
4 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-06-01 09:00:18 得分 0
*sl=s2;
------
修改常量是不行的。Top
5 楼llf_hust()回复于 2005-06-01 09:12:40 得分 0
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
main()
{
char*s1="This is",*s2="a example!";
char *p,*p1;
p = (char *) malloc (strlen(s1) + strlen(s2) +1);
p1 = p;
for(;(*p = *s1) != '\0'; s1++,p++)
;
while( *s2 != '\0' )
{
*p++ = *s2++;
}
*p = '\0';
printf(" %s " , p1);
getchar();
}
Top
6 楼shine51151(美丽心情)回复于 2005-06-01 11:57:28 得分 5
#include <iostream.h>
#include <stdio.h>
#include <string.h>
void main()
{
char *s1="This is", *s2=" an exam pie.";
char *p1, *p2;
p2 = new char[strlen(s1)+strlen(s2)+1];
p1=p2;
while(*s1)
{
*p1++=*s1++;
}
while(*s2)
{
*p1++=*s2++;
}
*(p1)='\0';
printf("%s\n", p2);
delete [] p2;
}Top




