2016-03-16 124 views
-1

我是C程序设计新手。你能告诉我,我的代码有什么问题吗?它看起来像if声明不起作用,而是跳转并打印else声明。所有的if语句不起作用的字符串比较

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

int main() 
{ 
    char profession; 

    printf("what is your profession? \n"); 
    scanf(" %s", profession); 

    if(profession==“QA”) 
    { 
     printf(“Go and Test\n“); 
    } 
    else 
    { 
     printf("Do whatever you want"); 
    } 

    return 0; 
} 
+1

不能 - 不能比较这样的以null结尾的char数组。这也是一个多重复制。 –

+0

我仍然困惑。像我应该在哪里做出改变? – Sus

+0

你有多个错误,显示一些错觉。你的编译器应该已经警告(如果没有,启用警告)。请阅读关于指针,数组和字符串的C书(以及其他)。 – Olaf

回答

0

首先,你不能比较像在使用C.或strcmp代替strncmp字符串。其次,在你的代码中,profession是一个char,你想在其中放入一个字符串(几个字符)。它不会工作。你可以创建一个char *(指针char)(不会忘记malloc() it)或者char [](char数组)。

0

首先,C中的字符串是字符数组,因此您必须将行业声明为指针,指向一组字符。因此,该陈述将如下所示:char* profession,其次,您必须使用名为strcmp(char* a, char* b)的方法,该方法接受两个字符指针。如果它们相等,这将返回0。我将包括答案,但我认为有更好的方法来编写此代码。

int main() { 

    char* profession; 
    char* compare = "QA"; 
    printf("What is your profession?\n"); 

    scanf(" %s", profession); 

    if(strcmp(profession, compare) == 0) { 
      printf("Go and Test\n"); 
    } else { 
      printf("Do whatever you want"); 
    } 

    return 0; 
} 
+0

谢谢您的澄清和解决方案 – Sus