gpt4 book ai didi

c - 如何通过输入重定向输入不同的数据类型?

转载 作者:行者123 更新时间:2023-11-30 19:18:15 24 4
gpt4 key购买 nike

我在 C 语言中的输入重定向方面遇到了一些麻烦。我正在制作一个扫雷程序,该程序接受扫雷场并计算每个方格周围有多少炸弹。就像在游戏中一样。

这是一个例子:

* = 炸弹A 。 =安全空间

* . . .
. . * .
. . . .

程序的输出如下:

* 2 1 1
1 2 * 1
0 1 1 1

所以。直奔问题

我试图让我的程序从命令提示符获取输入,例如:

./a.out < someFile.txt

但我不太清楚如何正确读取该文件。该文件将如下所示:

10 10
*.*.*.*.*.
.*.*.*.*.*
*.*.*.*.*.
.*.*.*.*.*
**********
.*.*.*.*.*
**********
.*.*.*.*.*
*.*.*.*.*.
.*.*.*.*.*

第一行由两个整数组成,表示后面的网格的大小。然后,网格及其所有部分都进来。那么我如何正确地从文件中输入这些数字/字符。这是我所拥有的。

    int i;
int j;
int xSize;
int ySize;
char tempChar;




xSize = fgetc(stdin);

ySize = fgetc(stdin);


for (i = 0; i < ySize; i++){
for(j = 0; j < xSize; j++){

tempChar = fgetc(stdin);
if(tempChar != '\n'){ // make sure it's not a newline char
gridArray[j][i] = tempChar;// grid array is an array of chars
}
}
}

程序只会读入 1 和 0 作为第一行的输入,而不是 10 10. ,其余的都乱七八糟并且在错误的位置。感谢您的帮助。

最佳答案

问题...

xSize = fgetc(stdin); // Returns 1. The stream is now "0 10....."
ySize = fgetc(stdin); // Returns 0. The stream is now " 10....."

您可以使用 fscanf 读取数字并跳过此后的所有内容,直到行尾。

fscanf("%d %d %[^\n]*", &xSize, &ySize);
// Format specifier for skipping until '\n'

现在读取'\n'并丢弃它。

fgetc();

关于c - 如何通过输入重定向输入不同的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26986996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com