全是问题啊 眼泪哗哗的
#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';
}