无法在字符数组中 scanf '-' 或 '+'

标签 c arrays matrix char

我正在去学校做作业。任务是用 C 编写程序,可以使用 *、-、+ 等矩阵做一些简单的事情。

我的程序正在读取矩阵并将它们保存到 int 数组中。当矩阵输入结束时,我 scanf 到 char 以了解要对矩阵执行什么操作。操作均存储在 char 数组中。 (输入最多可以有 100 个矩阵,因此中间有 99 个运算)。如果用户写 * 一切都可以,但是当用户写“-”或“+”时,它会存储“/n”。我正在谷歌搜索和调试,但仍然不知道为什么会发生这种情况。欢迎提出任何建议。

用户输入如下所示:第一行是矩阵的大小。

2 3

76 98 -31

30 30 32

-

2 3

89 25 38

1 -32 -38

    int* readMatrix(int width, int height, char arrayOperation[], int numberOfMatrix, int*err)
    {
    int sizeOfMatrix = ((height*width) + 3), i = 0;
    char operation = 'n';
    int *arrayMatrix = malloc(sizeOfMatrix* sizeof(int));
    arrayMatrix[0] = width;
    arrayMatrix[1] = height;
    for (i = 2; i <= sizeOfMatrix; i++)
    {
           if (i == sizeOfMatrix)
           {
                   if (scanf_s("%c", &operation) != EOF)
                   {
                           if (operation == '*' || operation == '-' || operation == '+')
                           {
                                  arrayOperation[numberOfMatrix] = operation;
                           }
                           else
                           {
                                  *err = 100;
                           }
                    }
                    else
                    {
                    arrayOperation[numberOfMatrix] = 'n';
                    break;
                    }
            }
            else if (scanf_s("%d", &(arrayMatrix[i])) == 1)
            {
                      *err = 0;
            }
    }
    return arrayMatrix;
    }

在*的情况下,var操作==*,但在-,+操作中==/n。我在循环中调用这个函数,输出数组存储在 int** 数组中。

最佳答案

scanf("%c" 读取下一个字符而不跳过任何空格,因此它将存储最后读取的内容之后的内容 - 通常是换行符。如果您想跳过空格,在格式中添加一个空格:

scanf(" %c", &operation)

这将跳过任何空格并存储下一个非空格字符。

您不需要使用 %d 作为所有转换模式,除了 %c%[ 跳过空格。

关于无法在字符数组中 scanf '-' 或 '+',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40438969/

相关文章:

c - 如何在 C/Objective-C 中将字符串文字拆分为多行?

php - 从多维数组中删除未设置的数组

C++:在不使用 vector 的情况下将字符串数组传递给函数

c - C语言读矩阵问题

python - 二维矩阵 : Finding and deleting columns that are subsets of other columns

c - 在链表中排序插入程序

c - 显示指针减法

javascript - 在 JQuery 中对 $ 返回的数组建立索引

python - 矩阵未对齐错误消息

c - 重定向输出