69,382
社区成员
发帖
与我相关
我的任务
分享
/*
不可显示转显示
*/
#include <stdio.h>
#define MAXLINE 100
void escape(char s[], char t[]);
int main()
{
char s[MAXLINE], t[MAXLINE];
printf("Input string: ");
gets(t);
escape(s, t);
printf("s: %s\n", s);
return 0;
}
void escape(char s[], char t[])
{
int i, j;
for (i=j=0; t[i] != '\0'; ++i)
{
switch (t[i])
{
case '\n':
{
s[j++] = '\\';
s[j++] = 'n';
break;
}
case '\t':
{
s[j++] = '\\';
s[j++] = 't';
break;
}
default:
{
s[j++] = t[i];
break;
}
}
}
s[j] = '\0';
}
/*
不可显示转显示
*/
#include <stdio.h>
#define MAXLINE 100
void escape(char s[], char t[]);
int main()
{
char s[MAXLINE], t[MAXLINE];
printf("Input string: ");
/*
---------------------------------------------------------------------
* gets() 以 '\n' 为结束标记, 而且不保留 '\n', 而 fgets() 也是以其
* 位结束标志就可以保留.
* 但这样的话, 你输入的字符串中只能出现一个 '\n' 在最后. 除非你输
* 入 \n 如: abcd\nefgh\nhijk\n[Enter] 就会有四个 \n.
---------------------------------------------------------------------
*/
fgets(t, MAXLINE, stdin); // 修改
escape(s, t);
printf("s: %s\n", s);
return 0;
}
void escape(char s[], char t[])
{
int i, j;
for (i=j=0; t[i] != '\0'; ++i)
{
switch (t[i])
{
case '\n':
{
s[j++] = '\\';
s[j++] = 'n';
break;
}
case '\t':
{
s[j++] = '\\';
s[j++] = 't';
break;
}
default:
{
s[j++] = t[i];
break;
}
}
}
s[j] = '\0';
}