Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C编程多维数组-保存两个”;int";及;char";在列_C_Arrays_Dimensional - Fatal编程技术网

C编程多维数组-保存两个”;int";及;char";在列

C编程多维数组-保存两个”;int";及;char";在列,c,arrays,dimensional,C,Arrays,Dimensional,嗨,我目前在我大学的一个项目上工作,该项目由一名管理员和一名客户组成。这是一个在线订购比萨饼的系统……客户必须登录,登录时必须填写一些关于姓名、姓氏、邮政编码等的信息。这些信息****必须****存储在多维数组中,其中的行表示客户。(第一行是关于第一个客户的,第二行是关于第二个客户的等等),而每列必须包含上述信息(姓名、姓氏、邮政编码)。我的问题是:如何让这些列存储姓名、姓氏(字符串)和邮政编码或地址号码(数字)?像“数组[0][1]=“Edward”;“不起作用” 附言: 我已经在整个互联网上

嗨,我目前在我大学的一个项目上工作,该项目由一名管理员和一名客户组成。这是一个在线订购比萨饼的系统……客户必须登录,登录时必须填写一些关于姓名、姓氏、邮政编码等的信息。这些信息****必须****存储在多维数组中,其中的行表示客户。(第一行是关于第一个客户的,第二行是关于第二个客户的等等),而每列必须包含上述信息(姓名、姓氏、邮政编码)。我的问题是:如何让这些列存储姓名、姓氏(字符串)和邮政编码或地址号码(数字)?像“数组[0][1]=“Edward”;“不起作用”

附言:

  • 我已经在整个互联网上搜索过了,我仍然没有找到任何东西。我将感谢任何帮助:)
  • 我是C语言的新手,对我的英语很抱歉
  • 显然,我们被允许使用指针

  • 可以使用结构将异构数据存储在一起:

    struct Client {
      char *name;
      char *surname;
      int postal_code;
      // Other fields
    };
    
    然后有一个数组:

    sturct Client client_array[N];
    
    或动态:

    struct Client *clients = malloc(N * sizeof *clients);
    

    无法使用您想要的“多维数组”,因为数组的所有元素都必须是同一类型。

    您可以使用*void指针数组,然后将其类型转换为int或char或char(字符串)数组。但这将是复杂和容易出错的,根本不值得推荐


    另一方面,你需要把这些数字存储为整数吗?除非对它们执行计算,否则为什么不将它们转换为字符串呢?可以将“10222”存储为字符串而不是整数。这会浪费一些内存(取决于数字的长度),但至少可以使用该多维数组。

    如果确实需要使用多维数组,请将数字另存为
    字符*
    。由于在某些地区,邮政编码或门牌号不仅由数字组成,有时也由字母组成,例如门牌号25e,因此无论如何都不应将其保存为整数。不过,按照StoryTeller的建议使用结构仍然是最好的解决方案

    #include <stdio.h>
    
    int main(int argc, char *argv[])
    {
        char* array[2][2];
        strcpy(array[0][0], "Hans");
        strcpy(array[0][1], "23");
        scanf("%s", array[1][0]);
        scanf("%s", array[1][1]);
    
        printf("%s\n", array[0][0]);
        printf("%s\n", array[0][1]);
        printf("%s\n", array[1][0]);
        printf("%s\n", array[1][1]);
    
        return 0;
    }
    
    #包括
    int main(int argc,char*argv[])
    {
    字符*数组[2][2];
    strcpy(数组[0][0],“Hans”);
    strcpy(数组[0][1],“23”);
    scanf(“%s”,数组[1][0]);
    scanf(“%s”,数组[1][1]);
    printf(“%s\n”,数组[0][0]);
    printf(“%s\n”,数组[0][1]);
    printf(“%s\n”,数组[1][0]);
    printf(“%s\n”,数组[1][1]);
    返回0;
    }
    
    请展示您迄今为止的研究/调试工作。请先阅读第页。如果需要在多维数组中将不同字段存储为列,则必须将所有内容存储为字符串,包括通常为数字的字段。这意味着您的数组必须是一个由
    char*
    组成的2D数组(每个“字段”都是动态分配的)或一个由
    char
    组成的3D数组,这样第三维空间就足够大,可以处理任何长度的字符串。您的意思是数组应该是这样的吗?:“char*array[0][10]?如果是..我已经尝试过..但是当我想在数组[0]中存储字符串时…我的程序崩溃了,我这样做有什么不对吗?哇!你发现互联网末日+1对不起,我无法抗拒。欢迎这么做。请看一下。你可能还想检查,和,以及如何创建。张贴你尝试过的代码和收到的错误。尽可能具体,因为这将导致更好的答案。已经考虑过了…但我们不应该使用“struct”而是一个多维数组。这就是我担心的问题…多维数组可以存储相同类型的元素。“不能通过指针或什么来完成?”考拉-在我看来,教你C的人做得很差。我知道,这种糟糕的要求不是一个好的C程序能做到的。事实上,在实验室里,我们只是做一些简单的多维数组,里面有数字……我们把它们作为参数传递给一个函数,然后返回它们的和,这是小菜一碟。我想这不会是个问题。我的第一个想法是,它不必是整数,而是字符串,正如你所说的。但是,例如,我如何扫描第一个客户端的邮政编码(“数组[0][2]”)?这就是可以包含某些内容的元素吗?或者它还需要其他东西吗?例如,您可以先使用scanf将其读入int变量,然后使用sprintf将其存储到数组中。所有这些都不太适合于生产代码,如果您想将其用于实际软件,我强烈推荐@StoryTeller使用structs的方法。我明白了。Struct非常适合这种情况,但我真的不知道为什么我们不应该使用Struct。