【问题标题】:I am not getting desired o/p for this我没有得到想要的o/p
【发布时间】:2015-03-25 10:18:05
【问题描述】:

我想用\n 替换字符串中的newline,但我无法这样做

#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]);  
}

我得到的 o/p 是:

我叫阿莫

^Z

我叫阿莫

我叫阿莫尔\

【问题讨论】:

  • 您正在编写“\n”,但随后立即用换行符覆盖 n。在替换的情况下您需要跳过y[m]=x[j];

标签: c string getchar


【解决方案1】:

在这里你可以简单地添加它

  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 部分添加剩余块

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-29
      • 1970-01-01
      • 2023-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多