不可移植指针转换

Nonportable Pointer Conversion

我编写代码并用 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),有人知道怎么做吗?

问题

第 1 点:

if(gender == "M")

应该是

if(gender == 'M')

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

第 2 点:

scanf("&s", gender);

应该是

scanf(" %c", &gender);

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

第 3 点:

你必须使用 like

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

原因:如果您正在编写 C 程序,则必须遵循 C 标准。 :-)

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