c语言程序出现ld returned 1 exit status怎么搞?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言程序出现ld returned 1 exit status怎么搞?相关的知识,希望对你有一定的参考价值。
这是详细代码
#include <stdio.h>
typedef struct g
int gcode;
int ecode;
char name[100];
int num;
int price;
Goods;
Goods goods[100];
int main()
int n,i,j,tmp;
printf("请输入商品个数:\n");
scanf("%d\n",&n);
for (i = 0; i < n; i++)
printf("请依次输入商品编号、商品类别编号、商品名称、库存数量、单价,并用空格隔开:\n");
scanf("%d\t%d\t%c\t%d\t%d\n",&goods[i].gcode,&goods[i].ecode,&goods[i].name[100],&goods[i].num,&goods[i].price);
for (i = 0; i < n; i++)
for(j=0;j<n-i-1;j++)
if(goods[j].num>goods[j+1].num)
tmp=goods[j].num;
goods[j].num=goods[j+1].num;
goods[j+1].num=tmp;
for (i = 0; i < n; ++i)
printf("%d\t%d\t%c\t%d\t%d\n",goods[i].gcode,goods[i].ecode,goods[i].name[100],goods[i].num,goods[i].price);
return 0;
主要以下几点问题:
单价使用float price,读取时使用%f,输出时%.2f;
scanf问题:读取时最好不要加字符或\\n不然会需要完全匹配间隔符号才能读取到。读取字符串时使用%s,goods[i].name数组名name就是地址不需要地址符 &
scanf("%d%d%s%d%f", &goods[i].gcode, &goods[i].ecode, goods[i].name, &goods[i].num, &goods[i].price);//C语言的写法
scanf_s("%d%d%s%d%f", &goods[i].gcode, &goods[i].ecode, goods[i].name,100, &goods[i].num, &goods[i].price);//C++需要使用_s函数同时紧跟其后标明字符串大小100。
你是要按商品数量排序,函数里面交换的是结构体变量,而不是其中数量一项。tmp定义为结构体变量Goods tmp,下面循环中if语句更正:
#include "stdafx.h"
#include <iostream>
using namespace std;
typedef struct g
int gcode;
int ecode;
char name[100];
int num;
float price;
Goods;
Goods goods[100];
int main()
int n, i, j;// tmp;
Goods tmp;
printf("请输入商品个数:\\n");
scanf_s("%d", &n);
for (i = 0; i < n; i++)
printf("请依次输入商品编号、商品类别编号、商品名称、库存数量、单价,并用空格隔开:\\n");
scanf_s("%d%d%s%d%f", &goods[i].gcode, &goods[i].ecode, goods[i].name,100, &goods[i].num, &goods[i].price);
for (i = 0; i < n; i++)
for (j = 0; j<n - i - 1; j++)
if (goods[j].num>goods[j + 1].num)
//tmp = goods[j].num;
//goods[j].num = goods[j + 1].num;
//goods[j + 1].num = tmp;
tmp = goods[j];
goods[j] = goods[j + 1];
goods[j + 1] = tmp;
printf("商品编号\\t商品类别\\t商品名称\\t库存数量\\t单价\\n");
for (i = 0; i < n; ++i)
printf("%d\\t\\t%d\\t\\t%s\\t\\t%d\\t\\t%.2f\\n", goods[i].gcode, goods[i].ecode, goods[i].name, goods[i].num, goods[i].price);
system("pause");
return 0;
参考技术A//代码有改动,请复制粘贴后编译运行,在此之前,请不要修改,切切!!!
#include <stdio.h>
typedef struct g
int gcode;
int ecode;
char name[100];
int num;
int price;
Goods;
Goods goods[100];
int main()
int n,i,j;
Goods tmp;
printf("请输入商品个数:\\n");
scanf("%d",&n);
printf("请依次输入商品编号、商品类别编号、商品名称、库存数量、单价,并用空格隔开:\\n");
for (i = 0; i < n; i++)
scanf("%d%d%s%d%d",&goods[i].gcode,&goods[i].ecode,goods[i].name,&goods[i].num,&goods[i].price);
for(i = 0; i < n; i++)
for(j = i;j < n - 1;j++)
if(goods[j].num > goods[j + 1].num)
tmp = goods[j];
goods[j] = goods[j + 1];
goods[j + 1] = tmp;
for (i = 0; i < n; ++i)
printf("%d\\t%d\\t%s\\t%d\\t%d\\n",goods[i].gcode,goods[i].ecode,goods[i].name,goods[i].num,goods[i].price);
return 0;
参考技术B 这种情况一般就是你把程序上次运行的黑框框没有关掉。只要关掉上次运行完的黑框框就好了。本回答被提问者和网友采纳 参考技术C
出现严重的bug应该进行线性调试
完美解决:/usr/bin/ld: cannot find -lc collect2: error: ld returned 1 exit status问题
使用命令
1.LD_DEBUG=all make
2.ld -lzlib --verbose
3.sudo ln -s /usr/lib/libz.so.1.2.8 /usr/lib/libzlib.so
参考:https://stackoverflow.com/questions/16710047/usr-bin-ld-cannot-find-lnameofthelibrary
以上是关于c语言程序出现ld returned 1 exit status怎么搞?的主要内容,如果未能解决你的问题,请参考以下文章
Qt编译中出现collect2.exe:-1: 错误:error: ld returned 1 exit status
QT C++新手问题:collect2:ld returned 1 exit status
error: ld returned 1 exit status
完美解决:/usr/bin/ld: cannot find -lc collect2: error: ld returned 1 exit status问题
完美解决:/usr/bin/ld: cannot find -lc collect2: error: ld returned 1 exit status问题
完美解决:/usr/bin/ld: cannot find -lc collect2: error: ld returned 1 exit status问题