strcpy()显示不兼容的整数到指针转换

jaxagkaj  于 2023-10-16  发布在  其他
关注(0)|答案(1)|浏览(112)
char arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    char var;

    // Asking input from user
    for (int l = 0; l < 3; l++)
    {
        for (int k = 1; k < 3; k++)
        {
            if (k % 2 != 0)
            {
                var = get_int("Enter position for x: ");
                strcpy(arr[l][k], "x");
            }
            else
            {
                var = get_int("Enter position for o: ");
                strcpy(arr[l][k], "o");
            }
            design(var, arr);
        }
    }
arrays/ $ make tictactoe
tictactoe.c:20:24: error: incompatible integer to pointer conversion passing 'char' to parameter of type 'char *'; take the address with & [-Werror,-Wint-conversion]
                strcpy(arr[l][k], "x");
                       ^~~~~~~~~
                       &
/usr/include/string.h:141:39: note: passing argument to parameter '__dest' here
extern char *strcpy (char *__restrict __dest, const char *__restrict __src)
                                      ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
2 errors generated.
make: *** [<builtin>: tictactoe] Error 1
9njqaruj

9njqaruj1#

arr被定义为char arr[3][3],所以arr[l][k]char
strcpy需要一个char *,一个指向char的指针,更具体地说,是一个指向char系列中第一个的指针,它将向这个char系列复制字符串(一个以NULL结尾的char值序列)。
看起来你想要arr[l][k] = 'x';
其他问题:

  • 这样初始化arr真的有意义吗?
  • 如果k是水平偏移量,为什么要用它来确定应该使用x还是o
  • 为什么var没有在任何地方使用?
  • 为什么你要尝试在每个位置上循环?
  • 你为什么要跳过第一列呢?

相关问题