Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
如何使用list()在C中创建列表?(正在尝试将元素保存到列表或从列表中提取元素)_C_List - Fatal编程技术网

如何使用list()在C中创建列表?(正在尝试将元素保存到列表或从列表中提取元素)

如何使用list()在C中创建列表?(正在尝试将元素保存到列表或从列表中提取元素),c,list,C,List,如何使用list()在C中创建列表?不是链表,只是元素的常规列表。我来自python,在那里我可以使用list=[]。但是当我在谷歌上搜索“C语言列表”时,唯一出现的是链表。我假设有一个函数list()创建了一个列表。我不知道如何提取第一个和第二个值: int L = list(1,2,3,4,5); int a = L[0]; int b = L[1]; 我需要在C中创建一个列表来存储两个值,一个分子(n)和一个分母(d)。我正在创建一个分数计算器,我希望n和d是我存

如何使用list()在C中创建列表?不是链表,只是元素的常规列表。我来自python,在那里我可以使用list=[]。但是当我在谷歌上搜索“C语言列表”时,唯一出现的是链表。我假设有一个函数list()创建了一个列表。我不知道如何提取第一个和第二个值:

    int L = list(1,2,3,4,5);
    int a = L[0];
    int b = L[1];

我需要在C中创建一个列表来存储两个值,一个分子(n)和一个分母(d)。我正在创建一个分数计算器,我希望n和d是我存储在分数(列表)中的两个值。我不想编写一个f1=(n1,d1)到fk=(nk,dk)的程序。

C中没有列表。C标准库中没有列表,所以我不确定您在哪里找到它。在C语言中,通常使用数组

int L[] = {1,2,3,4,5};
int a = L[0];
int b = L[1];

C中的等价物是元素数组:

int x[10];
是一个
int
s的数组,其大小为10

在C中初始化数组有几种方法,例如:

int x[10] = {0,1,2,3,4,5,6,7,8,9};
int x[] = {0,1,2,3,4,5,6,7,8,9};
也可以指定单个元素:

int x[10];
x[0] = 0;
x[1] = 1;
.
.
x[9] = 9;

您应该阅读更多关于数组以及它们如何在c中工作的信息。

我在那里看到了两个问题:

  • 如何使用数据结构存储非原子类型变量
  • 如何创建此类结构的(同质)数组
  • Python列表没有直接的等价物,因为C不能存储任意长度的异构数据类型。您可能需要更深入的背景阅读,但以下是一些可能有帮助的示例代码:

    #include <stdio.h>
    #include <stdlib.h>
    
    // Define a structure type, no builtin tuples
    typedef struct { 
        int n;
        int d;
    } Fraction;
    
    
    int main(int argc, char **argv) {
        int i;
        int N = 5; 
        Fraction f0 =  {2, 3};  // Directly create & initialize data 
        Fraction *fractions;    // variable length ponter to array of Fractions 
    
         
        // Using dynamic allocation of arrays
        fractions =  (Fraction *) malloc(N*sizeof(Fraction));  
        fractions[0] = f0;                   
        fractions[1] = (Fraction) {5, 7};    // This needs to be explicitly casted to Fraction type
        fractions[2] = (Fraction) {11, 13}; 
        fractions[3] = (Fraction) {17, 19}; 
        fractions[4] = (Fraction) {23, 29}; 
    
    
        printf ("Fraction0 -> numerator: %d, denominator: %d\n", f0.n, f0.d); 
    
        for (i=1; i < N; i++) {
            printf ("Fractions[%d] -> numerator: %d, denominator: %d\n", i, fractions[i].n, fractions[i].d); 
        }
    }
    
    #包括
    #包括
    //定义结构类型,无内置元组
    类型定义结构{
    int n;
    int d;
    }分数;
    int main(int argc,字符**argv){
    int i;
    int N=5;
    分数f0={2,3};//直接创建和初始化数据
    分数*分数;//分数数组的可变长度ponter
    //使用数组的动态分配
    分数=(分数*)malloc(N*sizeof(分数));
    分数[0]=f0;
    分数[1]=(分数){5,7};//这需要显式地转换为分数类型
    分数[2]=(分数){11,13};
    分数[3]=(分数){17,19};
    分数[4]=(分数){23,29};
    printf(“分数0->分子:%d,分母:%d\n”,f0.n,f0.d);
    对于(i=1;i分子:%d,分母:%d\n”,i,分数[i].n,分数[i].d);
    }
    }
    
    应打印:

    分数0->分子:2,分母:3

    分数[1]>分子:5,分母:7

    分数[2]>分子:11,分母:13

    分数[3]>分子:17,分母:19

    分数[4]>分子:23,分母:29


    谢谢如果我把()放在单词后面,那么升华文本的颜色会对单词进行编码。我以为它能像识别int或struct一样识别它,因为它显示为相同的颜色。@DanO'Connell没问题。如果其中一个答案解决了你的问题,请务必接受。C没有列表。如果您需要对它们进行编码(使用包含指针的heap-allocated
    struct
    ),这与我试图实现的目标非常接近。我试图扫描分子和分母。谢谢你的帮助。还有一个问题:如果我试图使用scanf给n和d一个值,我会怎么做?我试过使用&(f->Fraction.n)、&Fraction.n、Fraction.n和简单的&n,但这些都不起作用。不客气。Try:
    scanf(“%d%d”,&f0.n,&f0.d)。如果您使用“f”作为数组/指针,那么它将类似于
    f=&f0;scanf(“%d%d”,&(f->n),&(f->d))请记住首先将“f”分配给已分配的结构,否则可能会出现segfault。