如何获取int类型的变量以使C中的字符值

时间:2016-03-07 22:42:24

标签: c char int

我特别想做的是有一个for循环迭代板数组,当它到达用户输入的那个时,它用X替换它的值(板上的数字),以便用户在Tic Tac Toe板上放了一个X.我已经按照我认为应该完成的方式设置了for循环,但是我省略了循环的结果并将其替换为注释。

#include <stdio.h>
int main()
{
    int tLeft = 0;
    int tMid = 1;
    int tRight = 2;
    int mLeft = 3;
    int mMid = 4;
    int mRight = 5;
    int bLeft = 6;
    int bMid = 7;
    int bRight = 8;
    int userChoice, compChoice, i;
    int board[10] = {
        tLeft, tMid, tRight,
        mLeft, mMid, mRight,
        bLeft, bMid, bRight
    };

    printf("[%d][%d][%d]\n", tLeft, tMid, tRight);
    printf("[%d][%d][%d]\n", mLeft, mMid, mRight);
    printf("[%d][%d][%d]\n", bLeft, bMid, bRight);
    printf("Enter the number you would like to place an X at: ");
    scanf("%d", userChoice);

    for(i = 0; i < 9; i++)
    {
        if(board[i] == userChoice)
        {
            // MAKE BOARD[i] EQUAL TO X. THE PROBLEM WITH THIS IS THAT
            // BOARD[i] IS TYPE INT AND 'X' WOULD BE TYPE CHAR AND I
            // MIGHT SOUND LIKE A HUGE NOOB BUT I JUST STARTED CODING
            // IN C HALF AN HOUR AGO.
        }
    }

    return 0;
}

3 个答案:

答案 0 :(得分:4)

你可以写:

php artisan

board[i] = 'X'; 是一个字符常量,但由于奇怪的历史原因,C中的字符常量实际上具有类型'X'。 (见Why are C character literals ints instead of chars?。)

此外,即使字符常量 具有int类型,仍然没有问题。 C编译器可以隐含地&#34;促进&#34;一个charchar为你:

int

话虽如此,您可能需要重新审核一下char x = ...; board[i] = x; // allowed! board而不是int[]的决定。 。 。毕竟,当你打印出你的电路板时,你需要有一些方法来打印X.因此,您最好使用char[]而不是'1'

答案 1 :(得分:0)

您可以使用char数组

进行操作
char board[10] = {
    '1', '2', '3',
    '4', '5', '6',
    '7', '8', '9'
};

然后你做

scanf("%d", userChoice);
board[userChoice] = 'X';

所以你board实际上存储了游戏状态。它可以像你一样打印,但使用%c说明符。

注意:如果您想将数字字符转换为int,请使用此技巧int digit = c - '0';

答案 2 :(得分:0)

OP已使用board[]初始化0, 1, 2, 3, ...,但没有用处。

最好用3个值之一写入board[]:X,O或空。

在OP开始时,请使用:'X''O'' '

char board[10] = { ' ', ' ', ' ',  ' ', ' ', ' ',  ' ', ' ', ' '  };  

简单的印刷电路板状态可以使用

printf("[%c][%c][%c]\n", board[tLeft], board[tMid], board[tRight]);
.. 2 more lines

阅读输入后,测试是否使用

for (;;) {
  if (scanf("%d", userChoice) != 1) { 
    puts("Non-numeric input, quitting");
    return -1;
  }
  if (userChoice < 1 || userChoice > 9) { 
    puts("Out of range input, Try again");
    continue;
  }
  if (board[userChoice - 1] != ' ')) { 
    puts("Square all ready used, Try again");
    continue;
  }
}
board[userChoice - 1] != 'X';
写作2人TTT游戏后,OP约占20%。祝其他人好运。可以进行许多简化。