我想在字符串中将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 \
答案 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];