2013-10-20 6 views
-3

사람의 성명 (공백으로 구분 된 이름과 성)을 키보드에서 읽으려는 경우 해당 이름의 첫 글자를 대문자로 변경합니다 그렇지 않으면 화면에 이름이 표시됩니다.C++ 코드에서 잘못된 결과가 발생했습니다.

문제는 내가 코드를 컴파일하려고 할 때마다 내가 입력했지만 처음 이름의 목록의 첫 번째 이름을 포함하지 않지만 다른 한편으로는 성을 얻는다는 것입니다. 나는 입력했다. 예를 들어 첫 번째 이름으로 "josh fred simon"을 입력하고 성으로 "Pirch"를 입력하면 프로그램은 "josh"라는 이름없이 = "fred simon Pirch"만 출력합니다.

대문자로 입력하지 않으면 입력 이름의 첫 글자를 대문자로 변경하는 방법은 무엇입니까 ??

먼저 cin와 다시 gets과 함께, 당신은 두 번 FirstName 읽고 내 코드의 복사본 >>

#include<conio.h> 
#include<cctype> 
#include<iostream> 
#include<stdio.h> 
#include<string> 

using namespace std; 

// main entry point for the program 
void main() { 

    char FirstName[20]; 
    char SurName[20]; 

    cout << "Program to read the information about a person"; 
    cout << "\nEnter your First Names please\n"; 

    cin >> FirstName; 

    gets(FirstName); 

    cout << "\nEnter your Surname please\n";  
    cin >> SurName; 

    //Now displaying the information  
    cout<<"Details of Person\n\n"; 

    cout<<"Full Name of the Person: "<< FirstName << " " << SurName << endl; 

    getch(); 
}  
+0

코드를 형식화하여 시작하면 누구나 이런 식으로 읽을 수 있습니다. –

+0

[Falsehoods Programmers는 이름에 대해 믿습니다] (http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/), # 17. 아, 그리고 # 18. 아, 그리고 # 20. 아마도 나머지도 마찬가지입니다. – usr2564301

+0

@ DanielSaska 나는 그것이 충분히 이해할 수 없다고 생각한다. – user2088978

답변

2

입니다.

cin >> FirstName; 
gets(FirstName); // remove this line 

또한 코드에서 단일 IO 라이브러리를 사용하십시오. <iostream>을 C++ 코드에 사용하고 제거하십시오. <stdio.h>

+0

나는 @Kunal을했지만 여전히 같은 결과를 냈다 !!! – user2088978

+0

@ user2088978 공백으로 구분 된 문자열을 읽으려면'std :: getline'을 사용하고 문자를 대문자로 변경하려면'toUpper'를 사용하십시오. – Kunal

+0

내 코드에서 사용하는 방법을 이해하지 못합니까 ?? – user2088978

관련 문제