c语言教程 求解错误 谢谢

关于C语言基础问题_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:448,962贴子:
关于C语言基础问题收藏
问题:C语言怎么把函数中返回的字符串拿来和其他字符串作比较?问题描述:例子:char getString(){
char string[] = &hello world&; }int main(){
char string_2 = &hello WORLD&;
//现在我想要比较string 和 string_2 是否相等
if ( strcmp( getString(), string_2 ) == 0){
printf(&same&);
}}我知道这种写法肯定是不对的 ,正确的能达到目的的应该怎么写,望朋友们指点一下
char *getString(){.
char string[] = &hello world&;
char string_2[] = &hello world&;
if ( strcmp( getString(), string_2 ) == 0){.
printf(&same&);
要解决这个问题,必须用malloc分配一块内存出来。
貌似还有一种蛋疼的解决方法,就是用结构体包装一个字符数组,然后返回结构体。
2楼的代码虽然丑却是正解
眼花了char *getString(){char string[] = &hello world&;}int main(){char *string_2 = &hello WORLD&;//现在我想要比较string 和 string_2 是否相等if ( strcmp( getString(), string_2 ) == 0){printf(&same&);}return 0;}
谢谢谢谢!正是这样 已解决问题!
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或请解答以下问题(c语言)。谢谢。约翰留下他的N(N <= 1000000)只奶牛上山采木.他离开的时候,她们像往常一样悠闲地在草场里吃草.可是,当他回来的时候,他看到了一幕惨剧:牛们正躲在他的花园里,啃食着他心爱的美丽花朵!为了使接下来花朵的损失最小,约翰赶紧采取行动,把牛们送回牛棚. 牛们从1到N编号.第i只牛所在的位置距离牛棚Ti(1≤Ti《2000000)分钟的路程,而在约翰开始送她回牛棚之前,她每分钟会啃食Di(1≤Di≤100)朵鲜花.无论多么努力,约翰一次只能送一只牛回棚.而运送第第i只牛事实上需要2Ti分钟,因为来回都需要时间.
写一个程序来决定约翰运送奶牛的顺序,使最终被吞食的花朵数量最小.
贪心算法,因为总时间是固定的,每次挑2 * Ti * ∑Dj最大的那个第i头牛
为您推荐:
扫描下载二维码C语言,帮忙找一下程序中的错误,详细解释一下,谢谢!_百度知道
C语言,帮忙找一下程序中的错误,详细解释一下,谢谢!
jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="/zhidao/wh%3D600%2C800/sign=7c7c1d0ee2dde711edfe223/bf096b63fd1f7fecf81a4c510fa29e://b.baidu.hiphotos.jpg" esrc="http.baidu&nbsp.hiphotos:///zhidao/pic/item/bf096b63fd1f7fecf81a4c510fa29e.hiphotos://b;<a href="/zhidao/wh%3D450%2C600/sign=dfd83fd4c91b9d168aee98b9/bf096b63fd1f7fecf81a4c510fa29e
提问者采纳
数组的每个元素都是char *型的(即指向一个字符串)、temp类型错误、if语句错误;
因为name是一个数组。应该定义为:char *temp1。2,改为。可以看出if这里是想比较temp和name[i]字符串的大小,比较字符串大小应该用strcmp:
if (strcmp(temp, name[i]) &gt
name 里每个元素不也都是指针么,那temp指向了name[0]的地址,为啥还是定义成一级指针?
怎么不是二级的?
是啊。temp不是指向了name[0]的地址,指向name[0]的地址应该这样写:temp = &name[0]。
temp是指向了name[0]指向的地址,也就是说他们是同一级的。或许这样说有些绕。
因为操作字符串,就用char *指针就好了,二级三级指针只存在于C语言解惑那种书里,实际意义不是太大
name[0]指向了首串即“Windows”的首地址,那句话的意思是temp和name[0]指向了同一区域,都是串“windows”的首地址是吧
最后输出那句,既然以%s 输出的,那说明对应的应该就是地址了,那就是temp就成了是吧
那个比较字符串大小的那里边的参数用的是指针,是说明它就是代表整个串了么
是。是。这里也是个错误,没看清。这个感觉你理解不到位,C的精髓就是精简,东西就在这,怎么处理看程序员。一个char *指针可能只是单纯的指向一个字符,如果它后面还有其他一连串的字符,那当然就是字符串了。要把一个char *指针当作字符串,前提就是你知道它指向的位置处存储了很多字符并且以&#39;&#92;0&#39;结尾。
还想再问一句哈,如果写成temp 和 name[i]指针形式的话,就是两个串的比较,如果写成了*temp *name[i]了呢?因为*temp是指向串“Windows”的首地址的,是不是*temp 就代表了串的首字符W了呢?
是。对字符指针取值(*运算符)得到的就是字符,也就是这里的字符串首字符
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
来自团队:
其他类似问题
为您推荐:
其他1条回答
5;printf(&&temp=name[i];&&Visual&&(*name[i])&&&/*将*temp与name[i]中的字符串长度对比*/&int&&0)&nbsp,temp);&&i++)&Windows&&;Basic&;&nbsp#include&&nbsp,&;&&&&&return&&&&;&&&&&&&&&nbsp,&&for(i=1;&&int&&&nbsp,&&&*Foxpro&&;#include&&if(*temp&&*name[5]={&&i&&&Excel&&/*temp要定义为字符指针;&nbsp,&temp=name[0];&/*输出指针temp所指向的字符串*/&char&&char&};&&&&%s\n&&main(void){&nbsp.h&&&i;&&&&lt,用来存放字符串的首地址*/&0.h&Word&quot
temp我知道要定义成一个指针,但为什么是一级的而不是二级的指针,它不是指向了指针数组里首元素的地址么,里边的每个元素也是指针呀
temp不能是二级指针,name[0]是指向字符串&windows&的指针,不能赋值给一个二级指针。
嗯,那你这个字符串的比较,应该用字符串比较函数strcpy
是啊,错了,字符串比较要用strcmp
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁共有 2568 人关注过本帖
标题:超级新手,有两个错误不明白什么意思,求助~O(∩_∩)O谢谢
等 级:新手上路
帖 子:22
结帖率:66.67%
&&已结贴√
&&问题点数:20&&回复次数:9&&&
超级新手,有两个错误不明白什么意思,求助~O(∩_∩)O谢谢
error C2449: found '{' at file scope (missing function header?)
&error C2059: syntax error : '}'
下面是代码
int max(int a,int b);
&&& int x,y,z;
&&& int max(int a,int b);
&&& printf(&input two numbers:\n&);
&&& scanf(&%d%d&,&x,&y);
&&& z = max(x,y);
&&& printf(&maxnum = %d&,z);
int max(int a, int b);
&&& if(a&b)
搜索更多相关主题的帖子:
等 级:千里冰封
帖 子:1554
专家分:10000
#include &stdio.h&
int max(int a,int b);
&&& int x,y,z;
&&& int max(int a,int b);
&&& printf(&input two numbers:\n&);
&&& scanf(&%d%d&,&x,&y);
&&& z = max(x,y);
&&& printf(&maxnum = %d&,z);
int max(int a, int b)
&&& if(a&b)
控制系统中的C是怎么样的?欢迎来群一起交流进步
等 级:论坛游民
帖 子:22
专家分:43
在定义max函数时后面多加了个分号,不够细心啊!!!
等 级:论坛游侠
帖 子:58
专家分:128
1、main函数最后加个return 0;
2、int max(int a, int b);&&&这里多了个分号
&&& if(a&b)
等 级:新手上路
帖 子:19
main函数最后加个return 0,这个可加可不加,因为lz没有明确定义是void型还是int,建议使用int型,之后就要加
等 级:新手上路
帖 子:35
的确。。同上
等 级:业余侠客
帖 子:104
专家分:253
int max(int a, int b);&&把分号去掉啊
等 级:新手上路
帖 子:22
刚刚接触,所以什么也不懂,谢谢各位啦~
来 自:北京
等 级:业余侠客
帖 子:130
专家分:226
学习c是为了自己更强大。。。
等 级:论坛游侠
帖 子:110
专家分:198
在WIN TC或TC上去掉函数MAX定义的尾部去掉;后完全正确。
版权所有,并保留所有权利。
Powered by , Processed in 0.035294 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved共有 6310 人关注过本帖
标题:一直提示 error C2059: 语法错误 : “类型” ,求解哪里出现错误 谢谢
等 级:论坛游民
帖 子:20
专家分:39
结帖率:66.67%
&&已结贴√
&&问题点数:20&&回复次数:7&&&
一直提示 error C2059: 语法错误 : “类型” ,求解哪里出现错误 谢谢
#include&stdio.h&
#include&stdlib.h&
struct Student{
&&& char name[20];
&struct Student max(struct Student stu[])
&&& int i,m=0;
&&& for(i=0;i&5;i++)
&&&&&&&&if(stu[i].score&stu[m].score) m=i;
&&& return stu[m];
int main()
&&& struct Student stu[5]={{&Zhang&,},{&Lin&,},{&Sun&,10103,86},{&Wang&,
&&&&&&&&10104,68},{&Li&,10105,70}};//初始化方式!
&&& struct Student *p=
&&& struct S
&&& for(i=0;i&5;i++)
&&&&&&&&printf(&%s,%d,%0.2f\n&,stu[i].name,stu[i].num,stu[i].score);
&&& puts(&Sort:\n&);
&&& for(i=0;i&5-1;i++)
&&&&&&&&for(j=i+1;j&5;j++)
&&&&&&&&&&&&if(stu[i].score&stu[j].score)
&&&&&&&&&&&&{temp=stu[i];stu[i]=stu[j];stu[j]=}
&&& for(;p&stu+5;)
&&&&&&&&printf(&%s,%d,%0.2f\n&,p-&name,p-&num,p-&score);p++;
&&& puts(&The max is:\n&);
&&& temp=max(stu);
&&& printf(&%s,%d,%0.2f\n&,temp.name,temp.temp.score);
&&& system(&pause&);
&&& return 0;
搜索更多相关主题的帖子:
等 级:论坛游侠
帖 子:39
专家分:159
printf(&%s,%d,%0.2f\n&,temp.name,temp.temp.score);
这一行,分号 改成 逗号
另外,错误截个图或者说明哪一行,谢谢。
不骄不躁,不卑不亢;虚怀若谷,宠辱不惊。
等 级:论坛游民
帖 子:20
专家分:39
回复 2楼 n0noper
大神为我解决一个粗心的错误,首先十分感谢!
修改后,以下是编译结果:
1&------ 已启动生成: 项目: practice, 配置: Debug Win32 ------
1&正在编译...
1&strcut.c
1&d:\c_practice\vs\practice\practice\strcut.c(9) : warning C4003: “max”宏的实参不足
1&d:\c_practice\vs\practice\practice\strcut.c(9) : error C2059: 语法错误 : “类型”
1&d:\c_practice\vs\practice\practice\strcut.c(19) : warning C4003: “max”宏的实参不足
1&d:\c_practice\vs\practice\practice\strcut.c(19) : error C2059: 语法错误 : “类型”
1&d:\c_practice\vs\practice\practice\strcut.c(29) : warning C4305: “初始化”: 从“double”到“float”截断
1&d:\c_practice\vs\practice\practice\strcut.c(47) : warning C4003: “max”宏的实参不足
1&d:\c_practice\vs\practice\practice\strcut.c(47) : error C2059: 语法错误 : “)”
1&生成日志保存在“file://d:\c_Practice\vs\practice\practice\Debug\BuildLog.htm”
1&practice - 3 个错误,4 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
等 级:蜘蛛侠
帖 子:265
专家分:1010
你这个就是2楼说的那个问题。
1.分号改成逗号。printf(&%s,%d,%0.2f\n&,temp.name,temp.num;temp.score);
2.%0.2f改成%0.2lf
然后程序就可以完美运行了
授人以鱼,不如授人以渔
等 级:论坛游民
帖 子:15
专家分:22
回复 4楼 执笔画江山
我时初学者,为什么%fo.2和%f0.21.会有这么大差别。
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
以下是引用liting561199在 09:22:51的发言:
我时初学者,为什么%fo.2和%f0.21.会有这么大差别。
o是英语字符 0是数字 两个完全不一样啊 当然差别大
等 级:论坛游民
专家分:19
&&得分:15&
主要的错误是struct Student max(struct Student stu[])这个max函数,数学库函数中存在这个函数,你跟它重名了,编译时会按照库当中函数的参数来,你把这个函数名重新修改下就好。
等 级:蜘蛛侠
帖 子:265
专家分:1010
先写对再问吧!!!
是%0.2f和%0.2lf
一个是单精度的,一个是双精度的,这个具体根据你自己定义的参数类型进行配对就OK了!!至于0.2这是控制输出格式。你自己百度好好学一下,有很多这方面的资料
授人以鱼,不如授人以渔
版权所有,并保留所有权利。
Powered by , Processed in 0.030496 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved

我要回帖

更多关于 c语言教程 的文章

 

随机推荐