公告版位
星落的瞬間!放棄的後悔是永遠!

他說他從"深入學習c++"看的,可是我印象中沒有這本,但"深度學習c++"寫的還不錯,雖然沒有到很深,
至少比很多台灣作者最近出版的程式書好很多了,但是下面這個程式他說在"DEV-C++"上可以編譯成功!
編譯成功!
編譯成功!
編譯成功!
編譯成功!
編譯成功!
編譯成功!
編譯成功!
拜託不要嚇我好嗎?

#include<iostream>
#include<stdio.h>
using namespace std; 


int main() { 
string s;
scanf("%s",&s); 
  while(s != NULL){ 
  printf("hello, %s\n",&s);
  scanf("%s",&s);
  }  
  return 0;
}

可以吐槽的點太多了對吧!
我隨便說幾個我自以為的好了,
1. #include<stdio.h>
應該改成
#include<cstdio>

2. using namespace std; 
至少要放在main裡面

3.  scanf 不能讀到std::string裡面

4. std::string 不能跟 NULL比較

5. 用string 卻沒有#include <string>

好啦,真的有爛書這樣寫的話可以拿去回收了。
最近覺得常常不小心就把心裡話講出來,應該要說,
好啦,真的有這樣的書,又賣的不錯,應該要把他改一改出再版的。
買書時請貨比三家,結論。

創作者介紹

!壞人必需做好事!

讓地獄深紅的天亮 發表在 痞客邦 PIXNET 留言(2) 人氣()


留言列表 (2)

發表留言
  • novus
  • 真正會有編譯問題的就只有 s != NULL

    iostream一定會間接引用string

    至於 stdio 的缺省參數,基本上你餵他吃甚麼都好,反正編譯器都不會檢查。

    我在想如果連這些人都可以出書,我應該也可以去寫一本
  • 喔,真是小開眼界,哈哈哈,可以在網誌上寫c++問題解決日誌xd

    讓地獄深紅的天亮 於 2010/06/26 06:31 回覆

  • 路人甲
  • 路過看到...請教一下..
    2. using namespace std;
    至少要放在main裡面 ------>這句筆誤?!
  • 不是筆誤,是必要的好習慣!

    讓地獄深紅的天亮 於 2010/08/24 05:07 回覆