2015-03-23 3 views
0
#include <stdio.h> 

#define _CRT_SECURE_NO_WARNINGS 

int main(){ 

    const char* a = 0; 
    const char* b = "Georgi"; 
    printf("Hello, write your name!\n"); 
    scanf_s("%s", &a); 
    if (a = b){ 
     printf("\nHi,",b ,", its nice to see you my friend."); 
    } 
    else{ 
     printf("\nHello, its nice to meet you. My name is Supa-Dupa Computer!"); 
    } 
    getchar(); 
    return 0; 
} 

Так что я пытаюсь сделать программу, возвращающую смысл после вставки определенного имени. Впервые это сработало, но когда я ввел «Георги», он напечатал мне «чужой» смысл. Теперь, когда я ввожу даже только знак, программа просто выходит. Любые предложения, в которых я ошибаюсь?Не могу вернуть право, если заявление

+1

У вас есть неопределенное поведение ('a' неинициализируется, когда вы его читаете), и вы сравниваете указатели (вместо этого используйте вместо него' strcmp'.) – juanchopanza

+1

назначение против раунда сравнения 810. –

+1

Предполагается, что это C или C++ ? На любом языке вам нужно '==' not '=' для сравнения; но даже если вы исправите это, вы не сможете использовать это, чтобы сравнить неприятные строки в стиле C. Либо используйте библиотеку C++ 'std :: string', либо библиотеку C' strcmp' (In C, вам также необходимо предоставить массив для 'a', чтобы указать, и как-то избежать переполнения, если вход слишком длинный.) –

ответ

1

Во-первых, a = b не сравнивается a по b, он присваивает. Вы хотите ==.

Во-вторых, == по-прежнему неравно себя собой, поскольку вы сравниваете char* s, которые являются только указателями. Вы хотите strcmp(a,b).

И, наконец, a не инициализируется, когда вы в нем scanf_s. Сначала выделите память или просто используйте std::string.

Имейте в виду, если это на самом деле C++, как в теге, вы должны использовать cin и cout вместо printf и scanf

0

a = b означает «присвоить значение Б к» что вы хотите a == b, что означает " проверьте, имеют ли значения a и b одно и то же значение », но для сравнения строк в C вы должны использовать strcmp, как указано juanchopanza, также не инициализируется, вам нужно выделить память для него либо по значению malloc, либо путем изменения его в массив.

Смежные вопросы