The program was compiled normally,but catch below error while runing it.

oldhunter 2003-10-17 09:14:47
#include <malloc.h>
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
int num;
float score;
struct student *next;
};

main()
{
struct student *creat(void);
void print(struct student *);
struct student *p;
p = creat();
print(p);
}

struct student * creat(void)
{
struct student *head,*p1,*p2;
int n=0;
p1 = p2 = (struct student *) malloc(LEN);
scanf("%d,%f", &p1->num, &p1->score);

head = NULL;
while(p1->num != 0)
{
++n;
if (n==1)
head = p1;
else
p2->next = p1;
p2 = p1;

p1 = (struct student *)malloc(LEN);
scanf("%d,%f", &p1->num, &p1->score);
}

p2->next = NULL;

return head;
}

void print(struct student *p)
{
while(p != NULL)
{
printf("num: %d\tscore: %.2f\n", p->num, p->score);
p = (*p).next;
}
}


The program was compiled normally,but catch below error while runing it.

floating point formats not linked
Abnormal program termination.
...全文
51 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
oldhunter 2003-10-18
  • 打赏
  • 举报
回复
xiaosatan(傻蛋),you are right.I debug successfully.but this a strangly problem.
xiaosatan 2003-10-17
  • 打赏
  • 举报
回复
我想可以这样float temp=0.0;scanf("%f",&temp);p1->score=temp;
xiaosatan 2003-10-17
  • 打赏
  • 举报
回复
有人说是tc bug。但我想都是结构变量惹的祸。
oldhunter 2003-10-17
  • 打赏
  • 举报
回复
#include <malloc.h>
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
int num;
float score;
struct student *next;
};

main()
{
struct student *creat(void);
void print(struct student *);
struct student *p;
p = creat();
print(p);
}

struct student * creat(void)
{
struct student *head,*p1,*p2;
int n=0;
p1 = p2 = (struct student *) malloc(LEN);
scanf("%d", &p1->num);

printf("p1->num was pass.\n");

scanf("%f", &p1->score);

head = NULL;
while(p1->num != 0)
{
++n;
if (n==1)
head = p1;
else
p2->next = p1;
p2 = p1;

p1 = (struct student *)malloc(LEN);
scanf("%d,%f", &(p1->num), &(p1->score));
}

p2->next = NULL;

return head;
}

void print(struct student *p)
{
while(p != NULL)
{
printf("num: %d\tscore: %.2f\n", p->num, p->score);
p = (*p).next;
}
}

It was print "p1->num was pass.",I make sure it hasn't error in line of "scanf("%d", &p1->num);",but it throw error in line of "scanf("%f", &p1->score);",why?

oldhunter 2003-10-17
  • 打赏
  • 举报
回复
To mmlymlymly(mly),If I enter ',' betwwen two number,it throw above error,else must enter number until enter ','.
To xiaosatan(傻蛋),I'll try...
darcymei 2003-10-17
  • 打赏
  • 举报
回复
there is no problem in your programe
i guess you forget to enter ','between you enter the data to the list
xiaosatan 2003-10-17
  • 打赏
  • 举报
回复
把scanf("%d,%f",&p1->num, &p1->num);改成scanf("%d",&p1->num);scanf("%f",&p1->num);试试。另外我在“[原创]你知道为什么吗?”也有该问题的讨论。
daizh 2003-10-17
  • 打赏
  • 举报
回复
I perform it successfully using VC++6.0
Wolf0403 2003-10-17
  • 打赏
  • 举报
回复
you must be using TC2, which should be throw into the garbage bin now.
oldhunter 2003-10-17
  • 打赏
  • 举报
回复
don't successful,it's still alert fllowing:

floating point formats not linked
Abnormal program termination.
daizh 2003-10-17
  • 打赏
  • 举报
回复
#include <malloc.h>
#include <stdio.h>//to be added
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
int num;
float score;
struct student *next;
};

struct student *creat(void);
void print(struct student *);

void main()
{
struct student *p;
p = creat();
print(p);
}

struct student * creat(void)
{
struct student *head,*p1,*p2;
int n=0;
p1 = p2 = (struct student *) malloc(LEN);

scanf(" %d %f", &p1->num, &p1->score);//pay attention to this palce.

head = NULL;
while(p1->num != 0)
{
++n;
if (n==1)
head = p1;
else
p2->next = p1;
p2 = p1;

p1 = (struct student *)malloc(LEN);
scanf("%d,%f", &p1->num, &p1->score);
}

p2->next = NULL;

return head;
}

void print(struct student *p)
{
while(p != NULL)
{
printf("num: %d\tscore: %.2f\n", p->num, p->score);
p = (*p).next;
}
}
xiaosatan 2003-10-17
  • 打赏
  • 举报
回复
你的错误可能在scanf("%d,%f",&p1->num, &p1->num);上,把&p1->score改成&(p1->score)试试。
oldhunter 2003-10-17
  • 打赏
  • 举报
回复
what is the "stl"?
I am studing the Link,so must try it.
can you help me, expert?
ttlb 2003-10-17
  • 打赏
  • 举报
回复
为什么要这样?stl 里不时有现成的链表吗?
Installing c++/g++ on Windows Disclaimer: This page is being maintained mainly for my students. Use these instructions at your own risk. There is no warranty in any form or shape whatsoever!. There is no guarantee that these instructions are up-to-date. With that understood you may continue with the rest of this page if you choose to accept these terms. This page was last updated on September 13, 2005, but still good as of April 30, 2009. Follow these steps to install g++ (the GNU C++ compiler) for Windows. There is no room for creativity here; you must follow the directions exactly. Pick the drive and a folder in which you want to install g++. I'll assume that it is C:, but you can choose a different one. If you choose a different drive or a different folder, you'll need to adapt the directions below accordingly. Download full.exe, an about 14 megabyte executable, to C:\full.exe by right-clicking on the link. Use Save Link As... or Save Target As... Be sure the browser saves the file as C:\full.exe. Run the downloaded executable. This will install g++ (and a lot of other things that you don't really need) on your hard drive. Go to the C: drive using Windows Explorer and double-click on full.exe. Or, open a DOS window (Start > Programs > Command Prompt), connect to the C: drive using the cd command, and type full. Locate where the bin folder was created for the g++ installation. On my Windows XP machine, it was created in the following path: C:\cygnus\cygwin-b20\H-i586-cygwin32\bin You now should add it to the PATH environment variable. You do that by following: Start -> Control Panel -> System -> Advanced -> Environment Variables At this point you can see the PATH variable either in the User Variables or in the System Variables. Add the g++ path into the PATH variable. You add it to the end of the existing value separated by a semicolon (';'). Make sure that you do not lose the original value. You are just appending more to the end separated by a semicolon. Restart your computer. A Cygnus Solutions entry will appear in your Programs menu, and an icon may appear on your desktop. Don't use them! You will use it using the g++ command on a DOS prompt as explained below. You should now be able to run g++ from a DOS (Command Prompt) window. For example, to compile a file called C:\mine\hello.cpp, connect to the C:\mine folder and enter g++ -g hello.cpp -o hello -lm You'll then be able to run the compiled program by entering hello in the DOS window. If you've installed Emacs as described here, you will also be able to run g++ from Emacs. If, when you do this, Emacs tries to compile with the command make -k, you made a mistake during the Emacs installation. If you want to learn how to run g++ on emacs, see here. If you'd like to learn more about where this free compiler came from, we downloaded it from an older site of http://sourceware.org/cygwin/. If you wish to clean up a little, you may delete the file: full.exe at this point. Your g++ compiler is installed under C:\cygnus.

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧