Προς το περιεχόμενο

Πρόβλημα με ισότητα συμβολσειρών στη C


Kostasd_G21

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας παιδιά έχω να κάνω ένα project και έχω κολλήσει σ' ένα σημείο,βοηθείστε...:rolleyes:

 

>#include<stdio.h>
#include<stdlib.h>
#include<string.h>


int main(){
   char *name;
   name=(char*)malloc(50*sizeof(char));
   gets(name);
   if (name=="KO")
      puts("1");
   else
      exit(1);
   free(name); 
   system("pause"); 
    
   
}

 

Θέλω όταν ο χρήστης πληκτρολογεί ΚΟ να του βγάζει στην οθόνη 1 αλλά όσο και αν προσπάθησα δεν βγήκε αποτέλεσμα...

Δημοσ.
Γεια σας παιδιά έχω να κάνω ένα project και έχω κολλήσει σ' ένα σημείο,βοηθείστε...:rolleyes:

 

>

int main(){
   char *name;
   name=(char*)malloc(50*sizeof(char));
   gets(name);
   if (name=="KO")
      puts("1");
   else
      exit(1);
   free(name); 
   system("pause");     
}

 

Θέλω όταν ο χρήστης πληκτρολογεί ΚΟ να του βγάζει στην οθόνη 1 αλλά όσο και αν προσπάθησα δεν βγήκε αποτέλεσμα...

 

Η γραμμή

 

>if (name == "KO") 

 

τί πιστεύεις ότι κάνει; Αντικατέστησέ την με

 

>if (!strcmp(name, "KO"))

 

Δεν ξέρω με ποιον compiler κάνεις compile, αλλά σίγουρα πρέπει να σου έχει βγαλει ουκ ολίγα warnings. Για παράδειγμα η gets είναι λίγο unsafe συνάρτηση.

Δημοσ.

Το == δεν χρησιμοποιήται για να ελένξεις την ισότητα σε συμβολοσειρές γιατί στην ουσία είναι πίνακες από σύμβολα.

 

Μπορείς να ελένξεις έναν έναν τους χαρακτήρες της συμβολοσειράς αν είναι ίσοι με τους χαρακτήρες μιας άλλης ή απλά να χρησιμοποιήσεις τη συνάρτηση strcmp(a,B) που αν οι συμβολοσειρές a,b είναι ίσες επιστρέφει τον ακέραιο 0.

 

πχ:

 

>if (strcmp(name,"KO")==0){
    puts("1");
}

Δημοσ.
>// ca_2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"//replace with stdio.h & stdlib.h
int _tmain(int argc, _TCHAR* argv[])//replace with "int main()"
{
char c1=0;
char c2=0;
char *str1=0;
char *str2=0;

c1='X';
c2='X';

if(c1==c2){}
else{}

printf("Ti kanw?\n");
printf("if(%c==%c){}\n",c1,c2);
printf("else{}\n\n\n");

str1="y";
str2=(char*)malloc(1);

if(str1==str2){}
else{}

printf("Ti kanw?\n");
printf("if(%p==%p){}\n",str1,str2);
printf("else{}\n");


getchar();
return 0;
}

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...