2010-08-12 94 views
2

我做ķ&的r練習1-10爲什麼這個C程序不能逃脫反斜槓?

寫一個程序,其輸入複製到其輸出,通過\t替換每個選項卡,每個退格由\b\\每個反斜槓。這使得製表符和退格符以明確的方式可見。

我想出了這個...

#include <stdio.h> 

int main() { 

    int c; 
    printf("\n"); // For readability 

    while ((c = getchar()) != EOF) { 

     switch (c) { 
      case '\t': 
       printf("\\t"); 
       break; 
      case '\b': 
       printf("\\b"); 
      case '\\': 
       printf("\\"); 
       break; 
      default: 
       printf("%c", c); 
       break; 
     } 

    } 

} 

出於某種原因,它拒絕觸摸反斜槓。例如,從程序輸入字符串(例如Hello how\ are you?)時的輸出是Hello\thow\ are you?,這意味着它將製表符轉換爲OK,但不是反斜槓。

我做錯了什麼?

+4

我們是否至少可以提出問首先是否是功課?有很多人被告知他們的問題只是回答自己的家庭作業是自我教育。如果我們確定但我不是沒有確認的話,我都會爲它們加上標籤。而且,如果有人在說謊,那就太難了!因爲任何不監督這些網站進行剽竊的教育工作者都不應該接受教育,他們在交付工作時會失敗。 – paxdiablo 2010-08-12 07:20:48

+0

每位教育工作者在每次設置標記之前都必須檢查互聯網上的每個問題。我在雲蠢蠢的地方醒來了嗎?也許他們只是將每個學生答案的每一行粘貼到谷歌。這可能會起作用。 – 2010-08-12 08:17:42

回答

5

你可能想printf("\\\\");,而不是隻是printf("\\");

+1

提示:不要發佈作業的解決方案 – 2010-08-12 07:15:22

+1

@Aaron:我只希望一個15K代表SO用戶知道把問題標記爲家庭作業,如果是這樣的話。 – adamk 2010-08-12 07:18:04

+6

這不是一個家庭作業的解決方案。這是我們可以幫助的一個小細節,因爲OP已經完成了大部分工作。除非作業是「爲什麼這個C程序不能逃脫反斜槓?」在這種情況下,我擔心未來IT行業:-)最重要的是,HW標籤是由其他人添加的。 – paxdiablo 2010-08-12 07:18:11

2

您應該打印反斜槓其逃生。

目前你只是打印反斜槓 - 在這裏你逃跑,否則將難逃關閉雙引號第二反斜線:

printf("\\"); 
2

使用printf("\\\\")

+0

提示:不要發佈作業的解決方案 – 2010-08-12 07:15:56

+0

在這種情況下,即使它是作業也行 - 他粘貼了工作代碼,並表明他努力自己解決問題。 – zvrba 2010-08-12 09:26:12

2

C編譯器在源代碼中找到\\時會做什麼?

+3

提示:不要模糊的非作業:-) {只是一個微妙的刺拳,請不要冒犯}。 – paxdiablo 2010-08-12 07:26:58