c - 如何初始化结构中的字符

标签 c

我用三个字符创建了一个结构:

typedef struct{
  char inside;
  char condition;
  char whattoprint;      
} array;        

然后我制作一个 2d(数组类型)表并 malloc 它,现在一切都很好

然后我想调用一个函数来初始化我的表,它是这样的:

array **initialize_table(int x,int y,array **table){
    int i,j;
    for(i=0;i<=x;i++){
       for(j=0;j<=y;j++){
          table[i][j].inside='.';
       }
    }
    return table;
}

编译器没有显示错误,但当我运行它时,“table[i][j].inside='.';”中出现段错误线,我不知道我做错了什么。 我希望你明白我的意思,如果有人能提供帮助那就太好了!

最佳答案

问题出在这几行:

for(i=0;i<=x;i++){
    for(j=0;j<=y;j++){

在一个长度为x的数组中,索引从0x-1,所以它应该是

for(i=0;i<x;i++){

这样我们就不会访问不存在的索引 x,对于内部循环也是如此:

for(j=0;j<y;j++){

关于c - 如何初始化结构中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15938156/

相关文章:

C 编程整数大小限制

php - HTTP POST 未在 c 中返回正确的响应

C - 将数字列表与数组进行比较

c - C 中的浅拷贝

c - 从 C 文件中读取标记

C 只读取第一个结构体,无法读取其他输入

c - dtruss 与 DYLD_BIND_AT_LAUNCH 和 sshfs 在 OSX 10.9 中安装?

无法比较字符

c++ - 如何创建一个将其证书发送到服务器的 Gnutls-Client?

c - 将终端分成多个,并在每个终端上调用程序