I am on windows and using Visual Studio Code.
Question: Write a program to copy its input to its output, replacing each tab with \t, backspace with \b, and backslash with \\.
#include <stdio.h>
void main(){
int c;
for(c = getchar(); c != EOF ;)
{
if(c == '\t')
{
putchar('\\');
putchar('t');
}
if(c == '\\')
{
putchar('\\');
putchar('\\');
}
if(c == '\b'){
putchar('\\');
putchar('b');
}
if(c == ' '){
putchar('\0');
}
else
{
putchar(c);
}
c = getchar();
}
}
For the input: This is sparta
I get the output: This\t is\t sparta
I thought this was because, tab is 4 spaces and replacing it with '\t' meant the remaining 3 spaces get converted to blank space. That's why I added the if(c == ' '){putchar('\0'); } condition.
But, I still get an incorrect output.
If, I instead use else if, for the two subsequent conditions for '\\' and '\b', I end up with the correct output : This\tis\tsparta. Why does this happen?
Aucun commentaire:
Enregistrer un commentaire