| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2706 人关注过本帖, 1 人收藏
标题:我没有定义指针,但程序却说给空指针赋值?!!
只看楼主 加入收藏
YuriGagarin
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2008-2-22
结帖率:100%
收藏(1)
 问题点数:0 回复次数:13 
我没有定义指针,但程序却说给空指针赋值?!!
#include <stdio.h>
#include <string.h>
void main()
{
 char str0[20],str1[20],str2[20],string;
 scanf("%s%s%s",str0,str1,str2);
 {
  if (strcmp(str0,str1) > 0)
   strcpy(string,str0);
  else
   strcpy(string,str1);
 }
 if (strcmp(str2,string) > 0)
  strcpy(string,str2);
 printf("The largest string is:%s\n",string);
}

  该程序可以正确输出结果,但是在结果后面会出现一个提示,例如:
我输入:
CHINA
HOLLAND
AMERICA
显示结果:
HOLLAND
Null pointer assignment

  去百度查过了,这个提示的意思是:空指针赋值(定义了指针,但没有分配内存空间,指针是无效的)。
  我还没有学到指针那一章,实在是看不懂,这程序里究竟那里定义指针了??
搜索更多相关主题的帖子: 赋值 指针 定义 
2008-07-28 10:21
xiaomengxia2008
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2008-7-23
收藏
得分:0 
我编译的,没问题呀!

#include <stdio.h>
#include <string.h>
void main()
{
char str0[20],str1[20],str2[20],string;
scanf("%s%s%s",str0,str1,str2);
{
  if (strcmp(str0,str1) > 0)
   strcpy(string,str0);
  else
   strcpy(string,str1);
}
if (strcmp(str2,string) > 0)
  strcpy(string,str2);
printf("The largest string is:%s\n",string);
getch();
}

运行结果:HOLLAND
2008-07-28 10:38
himpo
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:192
专家分:123
注 册:2008-5-16
收藏
得分:0 
char str0[20],str1[20],str2[20],string;

你的string只是一个字符变量而不是一个字符数组。

真不知道你是怎么做到
strcpy(string,str0);的
2008-07-28 10:40
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
string[20]
你没有定义string的大小。。。

2008-07-28 10:40
woshiyun
Rank: 1
等 级:新手上路
威 望:2
帖 子:348
专家分:0
注 册:2008-6-16
收藏
得分:0 
1#,2#,你们用的什么编译器啊,功能太弱了啊。这个程序应该报编译语法错才对。
2008-07-28 10:43
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
对确实报错了。。。
就算不报错,运行时也会出错。。。

2008-07-28 10:50
YuriGagarin
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2008-2-22
收藏
得分:0 
Thank you very mcuh!
#include <stdio.h>
#include <string.h>
void main()
{
 char str0[20],str1[20],str2[20],[un]string[20][/un];
 scanf("%s%s%s",str0,str1,str2);
 {
  if (strcmp(str0,str1) > 0)
   strcpy(string,str0);
  else
   strcpy(string,str1);
 }
 if (strcmp(str2,string) > 0)
  strcpy(string,str2);
 printf("The largest string is:%s\n",string);
}

  搞定了!!已经不报错了!!

  想了三天,都没有看出个四五六来!
  原来是没有定义数组长度?!!
2008-07-28 11:25
crabeam
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-6-17
收藏
得分:0 
char *strcpy(char *dest, const char *src)
2008-07-28 11:25
xiaomengxia2008
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2008-7-23
收藏
得分:0 
回复 5# woshiyun 的帖子
win-tc,搞不懂
2008-07-28 14:16
xiaomengxia2008
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2008-7-23
收藏
得分:0 
我用C-free运行了一遍,报错了
但是用wintc1.9就没报错
以后编译器都得选好的了
2008-07-28 14:37
快速回复:我没有定义指针,但程序却说给空指针赋值?!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018638 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved