2015-10-14 76 views
0

我收到的錯誤是:格式「%C」需要類型的參數「符」

program3.cpp:13:21: warning: format ‘%c’ expects argument of type ‘char*’, but argument 2 has type ‘std::string* {aka std::basic_string<char>*}’ [-Wformat=] 

我可能缺乏有關C++語言知識的一個非常基本的一部分,我詢問這個​​新手道歉問題(再次)。此外,如果您能夠提供反饋或指出我的代碼中存在其他缺陷,我將不勝感激。 我的C++代碼有什麼問題?

#include <iostream> 
#include <stdio.h> 
using namespace std; 
int main(){ 
    int harga=20000; 
    int diskon; 
    char pelanggan; 
    string jenisp; 
    printf("Apakah Pelanggan : [Y/N]"); 
    scanf("%c",&pelanggan); 
    if(pelanggan=='Y'){ 
     printf("Apa Jenis Pelanggan [Emas,Perak,Perunggu]:"); 
     scanf("%c",&jenisp); 
     if(jenisp=="Emas"){ 
      diskon=harga-(0.5*harga); 
      printf("Harga untuk pelanggan kartu Emas adalah : %d",diskon); 
     } 
     else if(jenisp=="Perak"){ 
      diskon=harga-(0.25*harga); 
      printf("Harga untuk pelanggan kartu Perak adalah : %d",diskon); 
     } 
     else if(jenisp=="Perunggu"){ 
      diskon=harga-(0.1*harga); 
      printf("Harga untuk pelanggan kartu Perunggu adalah : %d",diskon); 
     } 
    } 
    else{ 
     printf("Harga untuk bukan pelanggan adalah : %d",harga); 
    } 
    return 0; 
} 
+6

不能讀取代替scanf("%c",&jenisp);成'的std :: string'與C函數。你爲什麼使用C++類型但C函數?選擇一種語言_(然後用_just language_標記這個問題)。 –

+0

@LightnessRacesinOrbit:你可以:'std:string s(101,''); scanf(「%100s」,&s[0]); s.resize(100);' – alk

+0

@alk:只滿足一個相當弱的定義:「讀入std :: string」:P –

回答

2

隨着錯誤消息指出,%c除了char*參數scanf以及將存儲一個字符那裏。它不會接受std::string*

使用此功能可能有助於學習。

std::string read_string() { 
    char buffer[10000]; // allocate enough memory 
    if(scanf("%9999s", buffer) == 1) { 
     // successfuly read something 
     return buffer; 
    } else { 
     return ""; 
    } 
} 

要使用此,int main()之前粘貼此與jenisp = read_string();

+0

@R_Kapp謝謝。 – MikeCAT

相關問題