UTF-8 编解码器无法解码位置 377 中的字节0x87:起始字节无效

utf-8 codec can't decode byte 0x87 in position 377: invalid start byte

提问人:Rohan Benny 提问时间:12/7/2022 更新时间:12/7/2022 访问量:77

问:

该程序将接受一个矩阵和一个整数,并用星号('*')替换所有元素,但左上角和右三角形以及右下角和左下角三角形中存在的元素除外。

法典:

#include <stdio.h>

int main()
{
    int n, x, i, j;
    // Inputs
    printf("n: ");
    scanf("%d\n", &n);
    char a[n][n], b[n][n];
    printf("Enter the matrix elements\n");
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
        {
            printf("[%d][%d]: ", i, j);
            scanf("%c\n", &a[i][j]);
            b[i][j] = '*';
        }
    }
    printf("x: ");
    scanf("%d\n", &x);
    printf("x: %d\n",x);
    
    // Implementation
    // Top right and left triangles 
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < x - i; j++)
        {
            b[i][j] = a[i][j];
        }
        for (j = n - 1; j >= (n - x) + i; j--)
        {
            b[i][j] = a[i][j];
        }
    }
    
    // Bottom right and left triangles
    int c = 0;
    for (i = n - 1; i >= (n - x); i--)
    {
        for (j = 0; j < x - c; j++)
        {
            b[i][j] = a[i][j];
        }
        for (j = n - 1; j >= (n-x) + c; j--)
        {
            b[i][j] = a[i][j];
        }
        c++;
    }
    
    // Printing the mat
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
        {
            printf("%c ", b[i][j]);
        }
        printf("\n");
    }
    
    return 0;
}

该程序适用于输入 1 到 8...我没有尝试超过 8 的输入,因为它对于键入 64 个元素来说已经足够乏味了,但是当我提交程序时,它显示对于矩阵大小为 50 的测试用例,结果是一个错误,特别是“utf-8”编解码器无法解码位置 377 中的字节0x87:无效的起始字节该程序适用于输入 1 到 8。知道为什么会这样吗?

C 矩阵 UTF-8

评论

0赞 Gerhardh 12/7/2022
您应该检查是否包含有效值。如果它太大,您可能会访问超出其边界的阵列。x
0赞 Rohan Benny 12/7/2022
该情况的 x 值为 10

答: 暂无答案