2017-05-31 12 views
-6

名前を読んで印刷しようとしています。しかし、コントロールは名前を入力するのを待たずに、無意味な文字で出力を直接印刷します。Cで文字列を読む

#include <stdio.h> 
using namespace std; 

int main() { 
    char name[20]; 
    printf("Enter name: "); 
    scanf("%s", name); 
    printf("Your name is %s", name); 
    return 0; 
} 

ここに間違いがありますか? Cにおいて

+11

名前空間stdはCではなく、C++です。 – LethalProgrammer

+1

これはCではない、 'using namespace'はC++です。それを削除し、Cとして構築することを確認してください。 – unwind

+0

プログラムが入力を待たず無意味な文字を印刷すると、コードをどのようにコンパイルできましたか? – Gaurav

答えて

5

このライン:

using namespace std; 

が存在しません。

#include <stdio.h> 

int main() { 
    char name[20]; 
    printf("Enter name: "); 
    scanf("%19s", name); 
    printf("Your name is %s", name); 
    return 0; 
} 

ヒント:

はここにあなたのコードでバッファオーバーフローを防ぐためにscanf("%19s", name);を使用して、あなたのバッファが20であると仮定します。

+4

次の質問はおそらく "どうすれば' scanf() 'にスペースを受け入れることができるのでしょうか? – Gaurav

+0

名前空間を削除した後にNope.Checked。 –

+0

すでにscanf( "%19s"、name)で試しましたか? scanf( "%19s"、name)の代わりに。 ?たぶん、改行文字を消費する必要があります。 –

関連する問題