【问题标题】:Can't output my list无法输出我的列表
【发布时间】:2014-05-14 12:12:00
【问题描述】:
#include <stdio.h>
#include <stdlib.h>

typedef struct lista
{
    char instrumento;
    char *nota;
    int inst;
    struct lista *prox;
}melodia;/*com typdef basta usar t_melodia não é preciso usar struct melodia*/



melodia *inicio, *fim; ///dois apontadores para definir o inico e o fim da lista

void inserir_inicio(char *v)
{
    if(inicio==NULL)
    {
        inicio = malloc(sizeof(melodia));
        inicio->nota = v;///nota fica com o valor recebido
        inicio->prox = NULL;///colocamos o prox para NULL
        fim = inicio;
    }
    else
    {
        melodia *temp = malloc(sizeof(melodia));
        temp->nota = v;
        temp->prox = inicio;
        inicio = temp; /// Colocamos o novo elemento no inicio
    }
    printf("Inserido no inicio\n");
}


void imprimir_lista()
{
    melodia *aux = inicio;
    printf("Lista:\n");
    while(aux!=NULL)
    {
        printf("%s", aux->nota);
        aux = aux->prox; /// proximo
    }
    printf("\n\n");
}

int main()
{
    int i = 0;
    char n[100];
    while(i<5)
    {
    scanf("%s",n);
    inserir_inicio(n);
    i++;
    }
    imprimir_lista();
}

我认为问题出在我的函数 imprimir_lista 中,我只是无法将我插入列表中的值打印到控制台....(如果您问自己,代码是葡萄牙语,对不起对于我的英语)

【问题讨论】:

  • 您的编译器应该针对该代码抛出多个警告。首先修复这些警告。
  • (1) at inserir_inicio : inicio-&gt;nota = v; : (char nota; , char *v) 不同的类型。
  • 添加一些打印输出,在调试器下运行,几分钟你就会明白一切
  • 现在有一个beta stackoverflow site in portuguese。你可能会喜欢它:)
  • 到达那里,这样的指针对我来说是新的。所以现在我可以打印但它只打印我在列表中插入的最后一件事

标签: c list output


【解决方案1】:

您总是将相同的地址传递给inserir_inicio()n)。

每次更改n的内容时,列表中的所有nota指针都指向新的内容。

您可能需要将输入复制到全新的对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多