【问题标题】:Why is this code not running on vs code while it's running fine on onlinegdb为什么这段代码不能在 vs 代码上运行,而它在 onlinegdb 上运行良好
【发布时间】:2021-03-23 13:42:45
【问题描述】:

它在输入 vs 代码时停止....当它在在线 c 编译器 onlinegdb 上工作时。 我应该怎么做它也适用于vs代码,vs代码中的所有设置似乎也很好,但不知何故这段代码不起作用

enter image description here

#include<stdio.h>
#include<stdlib.h>
struct node
{
    int data;
    int exp;
    struct node *next;
};

int main()
{
    int n,i=0;
    struct node *head,*newnode,*temp;
    head=0;
    printf("Enter number of elements:");
    scanf("%d",&n);
    while(i<n)
    {
        newnode= (struct node*)(malloc(sizeof(newnode)));
        printf("Enter data:");
        scanf("%d",&newnode->data);
        printf("Enter Power:");
        scanf("%d",&newnode->exp);
        newnode -> next=0;
        if(head==0)
        {
            head=temp=newnode;
        }
        else
        {
            temp->next=newnode;
            temp=newnode;
        }
        temp->next=head;
        i++;
    }

    struct node *temp1;
    if(head==0)
    {
        printf("Empty list");
    }
    else
    {
        temp1=head;
        while(temp1->next !=head)
        {
            printf("%d(x)^%d",temp1->data,temp1->exp);
            temp1=temp1->next;
            if((temp1->data)<0)
            {
                printf(" ");
            }
            else
            {
                printf(" + ");
            }
        }
         printf("%d(x)^%d",temp1->data,temp1->exp);
    }
}

【问题讨论】:

  • VS 代码只是一个编辑器,顺便说一句。如果它为您编译和运行代码,您可能已经安装了一些扩展。对于以后的问题,请为此类问题添加您的编译器名称和版本。
  • 您是否使用了不允许复制粘贴文本的终端
  • 我会将while(temp1-&gt;next !=head)更改为while(temp1 != NULL),并将temp1 = temp1-&gt;next;移动到循环的底部。此外,我会用两行替换以newnode -&gt; next=0; 开头的 11 行缠结:newnode-&gt;next = head; head = newnode;

标签: c visual-studio-code vscode-settings


【解决方案1】:
        newnode= (struct node*)(malloc(sizeof(newnode)));

错了。这一行 ls 仅分配一个指针,而结构需要一个空间。也投射malloc()is considered as a bad practice的结果。

应该是

        newnode= malloc(sizeof(*newnode));

        newnode= malloc(sizeof(struct node));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 2019-05-04
    • 2021-03-13
    相关资源
    最近更新 更多