首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用带有字符条件的if语句将int值插入矩阵?

如何使用带有字符条件的if语句将int值插入矩阵?
EN

Stack Overflow用户
提问于 2019-07-11 07:38:24
回答 2查看 80关注 0票数 1

我正在学习C语言,在这种情况下,我需要根据用户字符输入将值放入矩阵中,这是代码:

代码语言:javascript
复制
#include <stdlib.h>
#include <stdio.h>

int main() {

    int mat[2][2] = { NULL };
    char sex;

    printf("Insert gender (m or f):");
    scanf_s("%c", &sex);
    if (&sex == "m") {
        mat[0][0] = 1;
        }
    if (&sex == "f") {
        mat[0][0] = 2;
    }
    else{
        mat[0][0] = 3;
        printf("invalid\n");
    }
    printf("inserted: %c \n", sex);

    printf("value on matrix 00: %i\t", mat[0][0]);
    //printf("%i\n", mat[0][1]);
    //printf("%i\t", mat[1][0]);
    //printf("%i", mat[1][1]);

    return 0;
}

最后的值似乎是正确的,但是程序没有像我预期的那样运行,我看不到我的错误,有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-11 08:09:05

在C中,运算符==不能用于比较字符串。要做到这一点,您应该使用来自string.h.h的函数strcmp。在任何情况下,您需要的不是比较字符串,而是比较字符(您所做的是将地址与字符串进行比较)。我的建议是:扫描字符而不是字符串(使用scanf而不是scanf_s),并将等价性测试从&var == "val“更改为var == 'val‘。还有下面代码中的一些提示:

代码语言:javascript
复制
#include <stdlib.h>
#include <stdio.h>

int main()
{
    //name your variables properly
    //initialize them immediately to avoid undefined values
    //respect its types: use '\0' instead of 0 for chars, and 0 instead of NULL for ints

    char gender = '\0';
    int matrix[2][2] = {{0, 0}, {0, 0}};
    
    //display accurate messages to the user
    
    printf("Select a gender (m or f): ");
    
    //don't scan a string if you only need a char
    //always check the return of a scan
    
    if(scanf("%c", &gender) <= 0)
    {
         printf("Input error\n");
         return 0;
    }
    
    //switch is usually more efficient than else-ifs
    
    switch(gender)
    {
        case 'm':
            matrix[0][0] = 1;
            break;
        
        case 'f':
            matrix[0][0] = 2;
            break;
        
        default:
            printf("Invalid gender\n");
            return 0;
    }
    
    printf("Selected gender: %c\n", gender);
    printf("Value on matrix[0][0]: %d\n", matrix[0][0]);
    
    return 0;
}
票数 1
EN

Stack Overflow用户

发布于 2019-07-11 08:01:08

&sex == "m"sex的地址与字符串文字"m"的地址进行比较,假定结果为false。这不是你想要的。

您应该将sex的值与字符文字'm'进行比较,如下所示:

代码语言:javascript
复制
if (&sex == "m") {
    // ...
}

&sex == "f"也是如此,它应该是sex == 'f'

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56979885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档