Avatar billede kourinsu Nybegynder
07. april 2005 - 13:07 Der er 8 kommentarer og
1 løsning

If lig streng

Hej

Jeg er rimlig ny i c/c++, men har masser af erfaring i PHP, så det grundlæggende burde være på plads.

Jeg prøver at skrive et ganske lille og enkelt program. Grundlæggende er det lavet som følgende:

#include <stdio.h>
main()
{
char user_input;
printf("Navn: ");

scanf("%char", &user_input);

        if(user_input=='Brian')
        {
        printf("Kender ham\n");
        }       
        else
        {
        printf("Kender ham ikk\n");
        }
}

Det gider bare ikke spille. Det virker fint, så længe der kun er et tegn i if-betingelsen. Har prøvet at sætte char på alle mulige måder, samt også at bruge strcmp, men lige meget virker det.

Nogen forslag? Er sikker på, det er ganske enkelt (når man ved det.)

Mvh
Kourinsu
Avatar billede michael_stim Ekspert
07. april 2005 - 13:13 #1
if(user_input=="Brian")
Pröv den
Avatar billede jpk Nybegynder
07. april 2005 - 13:15 #2
char = 1 karakter

du skal bruge fx char user_input[100]; // 100 karakterer
Avatar billede jpk Nybegynder
07. april 2005 - 13:16 #3
...og du kan ikke bruge == på en tekststreng, brug fx metoden strcmp
Avatar billede kourinsu Nybegynder
07. april 2005 - 13:17 #4
Det giver en fejl i min compiler (Dev-C++):

ISO C++ forbids comparison between pointer and integer

Har lagt mærke til, at den kun tager første tegn i user_input, så måske man skal sætte en længde en størrelse på user_input, før den tager hele stregen med?
Avatar billede plx Nybegynder
07. april 2005 - 13:20 #5
char user_input[101];
scanf("%100s", user_input);

if(stricmp(user_input, "Brian") == 0){
// kender ham
}

strcmp er case sensitive

'apostroffer' bruges KUN når du angiver en enkelt karakter. "" skal bruges ved strenge
Avatar billede kourinsu Nybegynder
07. april 2005 - 13:26 #6
Sweet...det gjorde det. Who want points? :)
Avatar billede bertelbrander Novice
07. april 2005 - 20:03 #7
Når du aligevel laver C++ er det lettere med std::string og std::cin og std::cout:

#include <iostream>
#include <string>

int main()
{
  std::string UserInput;
  std::cout << "Navn: ";
  std::getline(std::cin, UserInput);
  if(UserInput == "Brian")
      std::cout << "It's Brian" << std::endl;
  else
      std::cout << "It's not Brian" << std::endl;
}
Avatar billede anjensen1 Novice
08. april 2005 - 13:06 #8
de lidt irriterende '::' namespace opperander kan undværes hvis du tilføjer
  using namespace std;
umidelbart under dine includes
MEN! så mister du føling med hvor de metoder du bruger egentligt stammer fra -Det er mao lidt et temperament spørgsmål
Avatar billede kourinsu Nybegynder
10. april 2005 - 04:14 #9
For god ordens skyld, lukker jeg spørgsmålet nu. Syntes dog plx fortjener pointene, så hvis du gerne vil have dem, må du lige kontakte mig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester