【问题标题】:Using getchar to read in user input and create 2D matrix使用 getchar 读取用户输入并创建二维矩阵
【发布时间】:2018-06-12 22:58:53
【问题描述】:

提示用户输入字符串。

输入:1 2 3; 4 5 6; 7 8 9

输出:

1 2 3

4 5 6

7 8 9

同一行中的条目由一个空格分隔。行用分号和空格分隔。我需要使用 getchar 函数手动解析输入行,以便我可以创建此矩阵并对其进行其他操作。

甚至不知道从哪里开始。我正在考虑使用每次读取分号时递增的循环。但是我真的一点都不知道getchar怎么用!

while((input1 = getchar())!= '\n')
{
    if((input1 > '0') || (input1 < '9')){
        matrixA[row][col] = input1;
        if(input1 == ' '){
        col++;
        matrixA[row][col] = input1;
    }
    if(input1 == ';'){
        matrixA[row][col]=input1;
        row++;
    }

编辑:此代码打印(空)

【问题讨论】:

  • 我将从一个更简单的任务开始。创建一维数组。使用getchar 填充它。然后使用printf 显示它。
  • 如果您想读取多个字符,循环可能是个好主意。请注意getchar 返回一个int。当您要检查错误和文件结尾(或您的情况下的输入结尾)时,这一点非常重要。
  • 你为什么需要使用getchar()——这是课堂练习的要求吗?这可能不是一个好的选择,除非你的手被你的导师束缚住了,或者你确定所有的数字都是个位数。
  • 至于从哪里开始:从定义一个矩阵开始——你的变量matrixA 不是(根据术语的任何合理定义)一个矩阵。如果你不知道该怎么做,你需要去读教科书。
  • 必须使用getchar,所有输入都假定为最多6位的正数。

标签: c matrix multidimensional-array user-input getchar


【解决方案1】:

经过进一步的提炼: 它只打印用户输入的第一个字符或前两个字符,具体取决于遇到第一个分号之前的输入数量。我的打印语句在循环之外。

char matrixA[100][100];

char matrixB[100][100];
char input1, input2;
int row=0, col=0, num = 0;

printf("Enter matrix A:\n");

while(input1 != '\n'){

    input1 = getchar();

    if((input1 > '0') && (input1 < '9') && (input1 != ' ') && (input1 != ';')){
        //num = (num*10) + (input1 - '0');
        matrixA[row][col] = input1; 
    }  

    if(input1 == ' '){
        col++;
    }
    if (input1 == ';'){
        row++;        
    } 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-13
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    相关资源
    最近更新 更多