非便携式指针转换

时间:2015-02-20 10:21:12

标签: c scanf turbo-c

我编写了代码并用Turbo C编译了它。但它总是出现“Nonportable Pointer Conversion”错误。有什么想法吗?

#include "stdio.h", "conio.h"

void main(){
    char gender;
    clrscr();
    printf("Please enter your gender (M/F): ");
    scanf("&s", gender);
    if(gender == "M"){
        printf("Male");
    } else if(gender == "F"){
        printf("Female");
    } else {
        printf("Unknown");
    }
getch();
}

PS:我想强迫用户输入一个字母(M / F),有谁知道怎么做?

2 个答案:

答案 0 :(得分:3)

问题

第1点:

if(gender == "M")

应该是

if(gender == 'M')

原因:"M"代表字符串,'M'代表char

第2点:

scanf("&s", gender);

应该是

scanf(" %c", &gender);

原因:需要使用scanf()的正确签名。 %c是扫描char输入的格式说明符。您需要提供地址变量存储扫描值的位置。

第3点:

您可以使用

#include <stdio.h>
#include <conio.h>
.
.   //so on

原因:如果您正在撰写C计划,则必须遵循C标准。 : - )

答案 1 :(得分:0)

并在上面添加解决方案,在双引号中声明头文件意味着查看本地目录虽然它可以工作,但按照惯例,你应该将std文件放在尖括号中。