首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

全是有关问题啊 眼泪哗哗的

2012-12-31 
全是问题啊 眼泪哗哗的#includestdio.hvoid input(char *p){int ifor(i0i100&&(*(p+i)getchar())!

全是问题啊 眼泪哗哗的
#include<stdio.h>
void input(char *p)
{
int i;
for(i=0;i<100&&(*(p+i)=getchar())!=EOF;i++);
*(p+i)='\0';
}
void escape(char *p1,char *p2)
{
int i,j;
for(i=0,j=0;*(p1+i)!='\0';i++,j++)
{
if(*(p1+i)=='\n')
*(p2+j)='\\\n';
if(*(p1+i)=='\t')
*(p2+j)='\\t';
if(*(p1+i)=='\b')
*(p2+j)='\\b';
else *(p1+i)=*(p2+j);
}
*(p2+j)='\0';
}
int main()
{
int i;
char a[100];char b[100];
printf("a=");
input(a);
printf("\n%s\n",a);
escape(a,b);
printf("b=%s",b);
return 0;
}


题目是把你输入的字符串A 复制到字符串B中去 其中 \n \t \b等转义字符要以可见形式输出
[解决办法]
#include<stdio.h>
 void input(char *p)
 {
 int i;
 for(i=0;i<100&&(*(p+i)=getchar())!=EOF;i++);
 *(p+i)='\0';
 }
 void escape(char *p1,char *p2)
 {
 int i,j;
 for(i=0,j=0;*(p1+i)!='\0';i++,j++)
 {
 if(*(p1+i)=='\n')
 *(p2+j)='\\\n';
 if(*(p1+i)=='\t')
 *(p2+j)='\\t';
 if(*(p1+i)=='\b')
 *(p2+j)='\\b';
 else *(p2+i)=*(p1+j);//你把代码写错了p1和p2换一下
 }
 *(p2+j)='\0';
 }
 int main()
 {
 int i;
 char a[100];char b[100];
 printf("a=");
 input(a);
 printf("\n%s\n",a);
 escape(a,b);
 printf("b=%s",b);
 return 0;
 }

[解决办法]

void escape(char *p1,char *p2)
{
int i,j;
for(i=0,j=0;*(p1+i)!='\0';i++,j++)
{
if(*(p1+i)=='\n')
*(p2+j)='\\\n';
if(*(p1+i)=='\t')
*(p2+j)='\\t';
if(*(p1+i)=='\b')
*(p2+j)='\\b';
else *(p1+i)=*(p2+j);
}
*(p2+j)='\0';
}

else *(p1+i)=*(p2+j);这改为else *(p2+i)=*(p1+j);

热点排行