我没有得到o / p这个

时间:2015-03-25 10:18:06

标签: c string getchar

我想在字符串中将newline替换为\n,我无法执行此操作

#include<stdio.h>
#define MAX 1000
void escape(char x[],char  y[]);
main()
{
int c=0,i;
char s[MAX],t[MAX];
for(i=0; (c=getchar())!=EOF && i<MAX;i++)
 s[i]=c;

s[i]='\0';
for(int k=0;k<i;k++)
 printf("%c",s[k]);

escape(s,t); 
}

void escape(char x[],char y[])
{
int j=0,m=0;
while(x[j]!='\0')
 {
    if (x[j]=='\n')
    {
      y[m++] = '\\';
      y[m] = 'n';   
     }
    y[m]=x[j]; 
    j++; 
    m++;   
 }
 y[m]='\0';
 for(int k=0;y[k]!='\0';k++)
 printf("%c",y[k]);  
}

我得到的是:

我的名字是amol

^ Z

我的名字是amol

我的名字是amol \

2 个答案:

答案 0 :(得分:4)

在这里你可以简单地添加

  for(i=0; (c=getchar())!=EOF && i<MAX;i++){
       if(c=='\n'){
          s[i++]='\\';
          s[i]='n';
       }
       else
         s[i]=c;
     }

在您的代码上添加\ and n后,您需要conitnue来自的循环 开始(或),您需要在else部分添加的剩余块

答案 1 :(得分:1)

您错过了else函数中的escape(),因此'n'被覆盖了

if (x[j]=='\n')
{
    y[m++] = '\\';
    y[m] = 'n';   
}
else            // <<<--- added a line
    y[m]=x[j];