为什么输出不了换行的转义字符
#include<stdio.h>void main()
{
char s,t;
int i,j;
gets(s);
for(j=i=0;s!='\0';i++)
{
switch(s)
{
case '\n':t='\\';
t='n';break;
case '\t':t='\\';
t='t';break;
default:t=s;
break;
}
}
t='\0';
puts(t);
}
问题出在使用了 gets() 函数来读取输入字符串。 gets() 函数会读取用户输入的字符串,直到遇到换行符为止。然而, gets() 函数会将换行符也读取到字符串中,导致后续的判断出现问题。
在输入字符串时,可以通过按下回车键来表示换行符。但是, gets() 函数会将回车键也读取到字符串中,因此在判断换行符时会出现错误。
解决这个问题的方法是使用 fgets() 函数来代替 gets() 函数。 fgets() 函数会在读取到换行符时停止读取,并将换行符存储在字符串中。这样,后续的判断就不会出现问题了。
修改后的代码如下:
#include <stdio.h>
int main() {
char s, t;
int i, j;
fgets(s, sizeof(s), stdin);
for (j = i = 0; s[ i] != '\0'; i++) {
switch (s[ i]) {
case '\n':
t = '\\';
t = 'n';
break;
case '\t':
t = '\\';
t = 't';
break;
default:
t = s[ i];
break;
}
}
t = '\0';
puts(t);
return 0;
}
这样修改后,就能正确输出换行的转义字符了。
页:
[1]