将程序转换为使用函数,现在运行时什么也不做

约翰·康纳

好的,所以在我正在研究的这本书中(尝试学习函数),我的编程项目是将我在上一章中编写的以前的程序转换为使用函数。所以我对其进行了转换,编译和运行,但是在运行该函数后,它无法执行该函数内的任何循环....因此,该程序运行了,但控制台中没有任何内容,只需按任意键即可出口。

我认为这可能与我的#define有关,但我不确定,因为我仍在尝试学习它们,并且本章似乎在代码的一部分中指出,无论功能如何,宏都可以在整个程序中使用。 ..纠正我,如果我错了,但是这是下面的代码,我对其进行了一些测试,并且这些函数被调用并一直运行,但是for循环如此使我无法运行我的printf测试...。

    // Chapter 9 Programming Project #3

  1 #include <stdio.h>
  2 #include <stdbool.h>
  3 #include <stdlib.h>
  4 #include <time.h>
  5
  6 #define SIZE 10
  7 #define PATH_SIZE 25
  8 #define ROW_SIZE ((int) (sizeof(walk) / sizeof(walk[0])))
  9
 10 void generate_random_walk(char walk[SIZE][SIZE]);
 11 void print_array(char walk[SIZE][SIZE]);
 12
 13 int main(void)
 14 {
 15         char walk[SIZE][SIZE];
 16         // Create board
 17         generate_random_walk(walk);
 18         // Print board
 19         print_array(walk);
 20         return 0;
 21 }
 22
 23 void generate_random_walk(char walk[SIZE][SIZE])
 24 {
 25         // 0 = Up, 1 = Down, 2 = Left, 3 = Right
 26         int i, x, y;
 27
 28         // Generate a random number
 29         srand((int) time(NULL));
 30         int dir = rand() % 4;
 31
 32         // Set all positions of walk to '.'
 33         for (x = 0; x < ROW_SIZE; x++) {
 34                 for (y = 0; y < ROW_SIZE; y++)
 35                         walk[x][y] = '.';
 36                 printf("Set Test: %d\n", x);
 37         }
 38         x = 0;
 39         y = 0;
 40         walk[0][0] = 'A';
 41
 42         // Generate the path
 43         for (i = 0; i < PATH_SIZE;) {
 44                 // Check that the last character has not been cornered
 45                 if ((walk[x][y - 1] != '.' || y - 1 < 0) &&
 46                                 (walk[x][y + 1] != '.' || y + 1 > ROW_SIZE) &&
 47                                 (walk[x - 1][y] != '.' || x - 1 < 0) &&
 48                                 (walk[x + 1][y] != '.' || x + 1 > ROW_SIZE))
 49                         break;
 50
 51                 // Check the direction and replace that char
 52                 switch (dir) {
 53                         case 0: if ((y - 1) >= 0
 54                                                 && walk[x][y - 1] == '.') {
 55                                         walk[x][--y] = i + 'B';
 56                                         ++i;
 57                                 } break;
 58                         case 1: if ((y + 1) < ROW_SIZE
 59                                                 && walk[x][y + 1] == '.') {
 60                                         walk[x][++y] = i + 'B';
 61                                         ++i;
 62                                 } break;
 63                         case 2: if ((x - 1) >= 0
 64                                                 && walk[x - 1][y] == '.') {
 65                                         walk[--x][y] = i + 'B';
 66                                         ++i;
 67                                 } break;
 68                         case 3: if ((x + 1) < ROW_SIZE
 69                                                 && walk[x + 1][y] == '.') {
 70                                         walk[++x][y] = i + 'B';
 71                                         ++i;
 72                                 } break;
 73                         default: if (walk[x][y] == '.')
 74                                          walk[x][y] = i + 'B';
 75                                  break;
 76                 }
 77
 78                 // Reset the random directions
 79                 dir = rand() % 4;
 80         }
 81 }
 82
 83 void print_array(char walk[SIZE][SIZE])
 84 {
 85         int x, y;
 86         // Print the walk
 87         for (x = 0; x < ROW_SIZE; x++) {
 88                 for (y = 0; y < ROW_SIZE; y++)
 89                         printf("%4c ", walk[x][y]);
 90                 printf("\n");
 91                 printf("Print Test: %d\n", x);
 92         }
 93 }

只是想花时间感谢这个社区中的每个人所提供的所有支持,我希望我能尽快得到您的支持。

泽夫·艾森伯格

当我尝试运行此命令时,收到以下编译器警告:

Untitled.c:34:25: warning: sizeof on array function parameter will return size of 'char (*)[10]' instead of 'char [10][10]' [-Wsizeof-array-argument]
        for (x = 0; x < ROW_SIZE; x++) {
                        ^

我忘记了细节(如果知道的话,请进来一点),但我似乎还记得关于C处理传递给函数的数组的方式很奇怪的事情。您可能想要计算数组的大小,并将其作为附加参数传递给函数,如下所示:

void generate_random_walk(char walk[SIZE][SIZE], int arraySize)

我的C语言有点生疏,所以如果我错过了一些东西,请有人更正我的参数语法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在运行时将JObject转换为类型

来自分类Dev

Ruby在运行时将变量转换为常量

来自分类Dev

在运行时转换(将int转换为double)并在变量上进行操作

来自分类Dev

我可以在运行时将std :: vector转换为std :: tuple吗?

来自分类Dev

在运行时将IList <string>强制转换为IList <object>

来自分类Dev

在运行时将ES5代码转换为ES6

来自分类Dev

如何在运行时将字符串转换为代码

来自分类Dev

在运行时将加载的模型转换为线框| Three.js

来自分类Dev

我可以在运行时将FBX文件转换为Three.js吗?

来自分类Dev

将lambda或方法组转换为Action <T>,其中T仅在运行时已知

来自分类Dev

将类方法转换为IL并在运行时执行

来自分类Dev

如何在运行时将日期转换为毫秒?

来自分类Dev

如何在运行时将动态转换为未知类

来自分类Dev

在运行时将对象转换为通用类型

来自分类Dev

在运行时将对象转换为通用类型

来自分类Dev

为什么在运行时处理虚函数?

来自分类Dev

在运行时使用功能转换类型列表

来自分类Dev

为什么我的代码需要使用fasta格式的DNA并将其转换为向量,所以在运行时会崩溃

来自分类Dev

如何将运行时有效的函数转换为constexpr?

来自分类Dev

可以在运行时使用Javascript创建函数吗?

来自分类Dev

使用JavaScript在运行时设置函数名称

来自分类Dev

在运行时使用Gcc导入C ++成员函数

来自分类Dev

如何将VBA Now()转换为秒来确定程序总运行时间

来自分类Dev

如何在运行时将字符串转换为其自身的带引号的版本?

来自分类Dev

iOS-我们可以在运行时将矢量pdf转换为png吗?

来自分类Dev

C#-将泛型接口转换为传递在运行时确定的类型<T>的泛型类

来自分类Dev

触发器在运行时将所有其他插入的值转换为 null

来自分类Dev

在运行时转换类型数组

来自分类Dev

将列表转换为Python设置的运行时间

Related 相关文章

  1. 1

    在运行时将JObject转换为类型

  2. 2

    Ruby在运行时将变量转换为常量

  3. 3

    在运行时转换(将int转换为double)并在变量上进行操作

  4. 4

    我可以在运行时将std :: vector转换为std :: tuple吗?

  5. 5

    在运行时将IList <string>强制转换为IList <object>

  6. 6

    在运行时将ES5代码转换为ES6

  7. 7

    如何在运行时将字符串转换为代码

  8. 8

    在运行时将加载的模型转换为线框| Three.js

  9. 9

    我可以在运行时将FBX文件转换为Three.js吗?

  10. 10

    将lambda或方法组转换为Action <T>,其中T仅在运行时已知

  11. 11

    将类方法转换为IL并在运行时执行

  12. 12

    如何在运行时将日期转换为毫秒?

  13. 13

    如何在运行时将动态转换为未知类

  14. 14

    在运行时将对象转换为通用类型

  15. 15

    在运行时将对象转换为通用类型

  16. 16

    为什么在运行时处理虚函数?

  17. 17

    在运行时使用功能转换类型列表

  18. 18

    为什么我的代码需要使用fasta格式的DNA并将其转换为向量,所以在运行时会崩溃

  19. 19

    如何将运行时有效的函数转换为constexpr?

  20. 20

    可以在运行时使用Javascript创建函数吗?

  21. 21

    使用JavaScript在运行时设置函数名称

  22. 22

    在运行时使用Gcc导入C ++成员函数

  23. 23

    如何将VBA Now()转换为秒来确定程序总运行时间

  24. 24

    如何在运行时将字符串转换为其自身的带引号的版本?

  25. 25

    iOS-我们可以在运行时将矢量pdf转换为png吗?

  26. 26

    C#-将泛型接口转换为传递在运行时确定的类型<T>的泛型类

  27. 27

    触发器在运行时将所有其他插入的值转换为 null

  28. 28

    在运行时转换类型数组

  29. 29

    将列表转换为Python设置的运行时间

热门标签

归档