- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 connect 4 程序,允许用户输入行数/列数以及获胜所需的连接长度。该程序的工作原理是,在游戏过程中的任何时候,您都可以键入“save”而不是您想要放置游戏 block 的列,并且游戏设置(num_rows、num_columns、length_to_win)将被写入名为 settings 的文件中.txt
我可以确认这有效,并且 settings.txt 保存的数据如下所示:
7 7 4
其中每个数字都是一个设置,后面有一个空格。
现在,我尝试读取这些整数并将它们设置为等于相应的变量,作为我的(希望成功的)加载游戏方法的开始;但是,当我尝试按照下面代码中所示的方式使用 fscanf 时,没有任何反应...并且当我之后查看 settings.txt 时,它是空白的..这是为什么?
主要方法
int main (int argc, char *argv[]) {
setvbuf(stdout, NULL, _IONBF, 0);
printf("Starting Game\n");
// the default values for board size if no command line arguments are used
int index;
int num_rows = 7;
int num_columns = 7;
int length_to_win = 4;
FILE *fp = fopen("settings.txt", "r");
// this loop checks for command line arguments and sets game variables accordingly.
for(index = 0; index < argc; ++index) {
if ( strncmp( argv[index], "-l", 5) == 0 ) {
fscanf(fp, "%d %d %d", &num_rows, &num_columns, &length_to_win);
}
if ( strncmp( argv[index], "-h", 5) == 0 ) {
num_rows =atoi(argv[index + 1]);
}
if ( strncmp( argv[index], "-height", 5) == 0 ) {
num_rows =atoi(argv[index + 1]);
}
if ( strncmp( argv[index], "-w", 5) == 0 ) {
num_columns = atoi(argv[index + 1]);
}
if ( strncmp( argv[index], "-width", 5) == 0 ) {
num_columns = atoi(argv[index + 1]);
}
if ( strncmp( argv[index], "-s", 5) == 0 ) {
num_rows = atoi(argv[index + 1]);
num_columns = atoi(argv[index + 1]);
}
if ( strncmp( argv[index], "-square", 5) == 0 ) {
num_rows = atoi(argv[index + 1]);
num_columns = atoi(argv[index + 1]);
}
if ( strncmp( argv[index], "-c", 5) == 0 ) {
length_to_win = atoi(argv[index + 1]);
}
if ( strncmp( argv[index], "-connect", 5) == 0 ) {
length_to_win = atoi(argv[index + 1]);
}
}
// these conditionals check for valid board size
if (num_rows <= 0 || num_columns <= 0 ){
printf("%s\n","You entered a width or length that was invalid." );
}
if (length_to_win <= 0 || length_to_win > (num_rows - 1)) {
printf("%s\n","You entered a winning length that was invalid." );
}
// this creates the board
int array[num_rows][num_columns];
initialize(num_rows, num_columns, array);
int answer;
int player = 0;
printf("%s\n", "*********************");
printf("%s\n", " Starting Board ");
printf("%s\n", "*********************");
puts("\n");
printBoard(num_rows, num_columns, array);
puts("\n");
printf("Player: %ds Turn\n", player + 1);
/*Start game loop*/
while(1) {
// prompts the user to select which column they want their piece to be placed
// -1 on the temp because the first column is technically 0 so if a player
// wants to place their piece in column "1", it'll be placed at index[0] accordingly
printf("%s\n", "Enter Column # To Place Token");
int column;
char temp[20];
scanf("%s", temp);
if (strncmp (temp, "save", 5) == 0){
// this writes the game settings to a file
int *rows = &num_rows;
int *cols = &num_columns;
int *len = &length_to_win;
FILE *fp = fopen("settings.txt", "w+");
fprintf(fp, "%d ", *rows);
fprintf(fp, "%d ", *cols);
fprintf(fp, "%d ", *len);
printf("Game Saved\n");
fclose(fp);
}
else {
column = atoi(temp) - 1;
}
if ((column < 0 || column > (num_columns - 1)) && (strncmp (temp, "save", 5) != 0) ) {
printf("%s\n","You entered a column that was invalid. Please try again." );
continue;
}
int attmpt = place_token(player, column, num_rows, num_columns, array);
if (attmpt != 1 && (strncmp (temp, "save", 5) != 0)) {
printf("%s\n","This row is already full. Please try again." );
continue;
}
printf("%s\n", "************************");
printf("%s\n", " Board Updated ");
printf("%s\n", "************************");
puts("\n");
printBoard(num_rows, num_columns, array);
puts("\n");
if (checkFullBoard(num_rows, num_columns, array)) {
printf("%s\n","This game is a tie. Thanks for Playing.\n");
return 0;
}
// this if-statement will constantly be run while the game progresses,
// meaning that winner will be called at every turn and
// all of the win conditions will be checked until a winner is found
int isWin = winner(num_rows, num_columns, length_to_win, array);
if(isWin != -1) {
char temp2[20];
printf("Player: %d is the winner! Thanks for Playing.\n", isWin + 1);
printf("Play again? (enter 'y' to continue)\n");
scanf("%s", temp2);
if (strncmp (temp2, "y", 5) == 0){
initialize(num_rows, num_columns, array);
printBoard(num_rows, num_columns, array);
}
else {
printf("Game over, goodbye!\n");
return 0;
}
}
// if a winner is not found then this if/else will continue to switch
// between players at the end of each turn
if ((strncmp (temp, "save", 5) != 0)) {
if (player == 1) {
player = 0;
}
else {
player = 1;
}
}
printf("Player: %ds Turn\n", player +1);
} // end of while loop
return 0;
} // end of main
最佳答案
根据silentboy的建议,解决方案是将“w+”替换为“a”。
关于c - 为什么我的文件内容消失以及如何正确读取该文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42571680/
我正在为我的按钮使用 onClick 功能。我的按钮代码如下所示: Button 1 Button 2 我的 JS 函数如下所示: function fadeNext(selectedId, spee
首先,我想提一下,我理解每个人在不提供至少一些试验或错误的情况下提出问题的感受,但这纯粹是一种知识需求,话虽如此,我会去提前问。 我一直无法弄清楚如何将保存在 MySQL 表中的 600-1000 个
我想做的事情有点令人困惑,而且我英语不太好,所以我先把代码贴在这里,这样你就可以很容易地理解: 以下是表单内容: Testing for Stackoverflow Option1
我学习 SDL 二维编程已有一段时间了,现在我想创建一个结合使用 SDL 和 OpenGL 的程序。我是这样设置的: SDL_Init(SDL_INIT_VIDEO); window = SDL_Cr
我创建了 2 个 data-* 标签。数据类别和数据标签。单击 href 标签后,我想复制该数据类别和数据标签以形成输入。我的代码是:
我想用 CSS 换行。我正在使用内容。 td:before { content: "Test\A Test2"; } 它不工作。如何正确
这个问题已经有答案了: Java Class that implements Map and keeps insertion order? (8 个回答) 已关闭 6 年前。 我有一个 HashMap
我正在尝试使用 JMeter 执行端到端测试。测试涉及写入SFTP文件夹并从另一个SFTP文件夹读取写入操作生成的文件。 我能够使用 JMeter SSH SFTP 插件连接到 SFTP 文件夹,并能
您好,我有带有标准服务器端 Servlet 的 GWT 客户端。 我可以从 GWT 客户端上传文件并在服务器端读取其内容 我可以将其作为字符串发送回客户端 但是 我有 GWT FormPanel与操作
我在 Plone 4.3.9 中创建了一个自定义类型的灵巧性,称为 PersonalPage,必须只允许在特定文件夹中使用 成员文件夹/用户文件夹 . 在他的 FTI 中,默认情况下 False .
在新(更新)版本的应用程序中更改小部件布局的最佳做法是什么?当新版本提供更新、更好的小部件时,如何处理现有小部件? 最佳答案 我认为您必须向用户显示一个弹出窗口,说明“此版本中的新功能”并要求他们重新
在我的应用程序中,我使用支持 View 寻呼机和 PagerTabStrip。进入查看寻呼机我有一些 fragment ,进入其中一个我正在使用支持卡片 View 。运行应用程序后,所有卡片 View
我有以下布局文件。基本上我有谷歌地图,在左上角我有一个 TextView,我需要在其中每 15 秒保持一次计数器以刷新 map 。布局很好。
我使用如下结构: HashMap > > OverallMap 如果我这样做: OverallMap . clear ( ) clear() 丢弃的所有内容(HashMap 对象、Integer 对
我在数据库中有 1000 张图像。在页面加载时,我随机显示 60 张图片,当用户滚动时,我通过 AJAX 请求添加 20 张图片。 第一种方法 我所做的是将所有图像加载到一个容器中,然后隐藏所有图像并
我正在使用 woocommerce 创建一个网上商店。 我想在每个产品上添加一个包含产品信息的表格,例如颜色、交货时间等等。 但是当我添加这张表时。本产品消失后的所有内容。 我的表的代码: td {
This question already has an answer here: What does an empty value for the CSS property content do?
因此,我正在与我的 friend 一起为 Google Chrome 开发一个扩展程序,对于大多数功能(即日历、设置等),我们打开一个模式,这样我们就不必重定向到另一个页面。当您在内容之外单击时,我们
我将可变高度的 CSS 框设置为在更大的 div 中向左浮动。现在我想添加一个标题,其中文本在框的左侧垂直显示(旋转 90 度),如下面的链接所示(抱歉还不能发布图片)。 http://imagesh
相关页面位于 www.codykrauskopf.com/circus 如果您查看我页面的右侧,在半透明容器和浏览器窗口边缘之间有一个间隙。我看了看,出于某种原因,wrap、main、content
我是一名优秀的程序员,十分优秀!