2015-04-22 2 views
0
#include <stdio.h> 
#include <string.h> 
#include <conio.h> 
#define SIZE 20 

int main(void) 
{ 
    int n; //number of characters to be compared 
    char s1[ SIZE ], s2[ SIZE ]; 
    char *results_word; 

    printf("Enter two strings: "); 
    gets(s1); 
    gets(s2); 
    printf("\nEnter the number of characters to be compared: "); 
    scanf("%d", &n); 

Le problème commence iciconversion non valide du `const char * 'à` char *'

results_word = 
       strncmp(s1, s2, n) > 0 ? " greater than " : 
       strncmp(s1, s2, n) == 0 ? " equal to " : " smaller than " ; 

    printf("\n%sis%s%s", s1, results_word, s2); 

    getche(); 
    return 0; 
}//end function main 

Alors, pourquoi ne pas result_word obtenir la chaîne correspondante?

+3

Je pense que vous utilisez un compilateur C++ non C –

+0

Vous semblez utiliser Borland/Turbo C, ce qui n'est pas une plainte très standard ni ne supporte le moderne C. 'gets()' est dangereux et a été déprécié. Utilisez 'fgets()' à la place. Btw, votre code semble bien. –

+1

changez 'char * results_word;' en 'const char * results_word;' – ANjaNA

Répondre

4

Le C++ message que vous obtenez dit tout d'erreur:

conversion non valide du `const char * 'à` char *'

Vous essayez d'attribuer une "<literal>" constante à la non constant results_word.

changement

char *results_word; 

pour être

const char *results_word; 

et cela fonctionnera.

+0

Supposons-nous un compilateur C++? –

+0

@ShafikYaghmour: Vous avez raison en C ce ne serait pas un problème. – alk

+0

J'utilisais devC++ – Shinz6