| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1397 人关注过本帖
标题:这里为什么写成sp=str或者sp=&str[0]会报错?
只看楼主 加入收藏
编程小猪
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2022-10-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
这里为什么写成sp=str或者sp=&str[0]会报错?
#include <stdio.h>
#include <string.h>
#define N 10
int main(){
    char str[N][81],*sp;
    int i;
    for(i=0;i<N;i++){
        gets(str[i]);
        sp=str[0];   
        //这里为什么写成sp=str或者sp=&str[0]会报错?
        //[Error] cannot convert 'char [10][81]' to char* in assignment
    }
    for(i=1;i<N;i++){
        if(strlen(sp)<strlen(str[i])){
            sp=str[i];
        }
    }
    printf("sp=%d,%s\n",strlen(sp),sp);
    return 0;   
}
搜索更多相关主题的帖子: 报错 str strlen char include 
2022-10-21 12:07
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:20 
sp 的类型是 char*;

str 的类型是 char[10][81];
str[0] 的类型是 char[81];
&str[0] 的类型是 char(*)[81];

类型不一致怎么转换?古人都能知道“牛头不对马嘴”。
只有 char[81] 可隐式转换为 char*,因为数组抛弃长度信息后就只剩下元素类型及地址信息

--------------------------

此外,gets 早在上个世纪就被废弃然后删除了。
printf 中 %d 对应 int类型,但 函数strlen 的返回类型是 size_t,它应该用 %zu。(不过,一个还用着上世纪gets的编译器,估计也不会知道%zu)
你的代码是 找出第一个最长的字符串 吗?挺奇怪的要求,一般都是 找字典序最小最大,而你是 找最长。
2022-10-21 13:34
编程小猪
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2022-10-17
收藏
得分:0 
回复 2楼 rjsp
谢谢你的回答,这个是教科书上的题目,题目就是输入10个字符串,找出最长的一串并且输出长度。我不懂拿过来问问,语言都是相通的我不知道你在说什么语言,虽然gets没有scanf常用,但是依然有它存在的道理。你很厉害,但是请你也别这么瞧不起人,瞧不起这门语言,瞧不起我的编译器。

[此贴子已经被作者于2022-10-21 15:45编辑过]


专升本备考中!!!
2022-10-21 15:44
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:0 
虽然gets没有scanf常用,但是依然有它存在的道理。你很厉害,但是请你也别这么瞧不起人,瞧不起这门语言,瞧不起我的编译器。

虽然gets没有scanf常用,但是依然有它存在的道理 ------ 那你告诉我为什么C语言标准为什么 废弃(1999年)并删除(2011年)了gets?
你很厉害,但是请你也别这么瞧不起人 ------ 我说的哪一句话瞧不起人了?没来由的自尊心。
瞧不起这门语言 ------ 熟悉我的人都知道,我极度推崇 C/C++ 这两门语言,虽然她俩不一样,环肥燕瘦。
瞧不起我的编译器 ------ 部分正确。严格来讲,我没有瞧不起你的编译器,我只是对「现代人使用古代的编译器」这个行为感到迷惑。
2022-10-21 16:55
编程小猪
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2022-10-17
收藏
得分:0 
回复 4楼 rjsp
对对对我是古代人行了吧

专升本备考中!!!
2022-10-21 19:42
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:633
专家分:3045
注 册:2011-4-22
收藏
得分:0 
哎,楼主太年轻了,00后吧?
rjsp是论坛的大侠,何况说话也没有过分之处。
其实有些大学的教科书,跟不上形势的。你看看你的教科书哪一年编的,用了多少年?
2022-10-21 19:50
编程小猪
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2022-10-17
收藏
得分:0 
回复 6楼 zbjzbj
C程序设计(第五版)谭浩强的,1991年的第一版,2017年的第五版。

专升本备考中!!!
2022-10-22 09:50
编程小猪
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2022-10-17
收藏
得分:0 
回复 2楼 rjsp
求教,sp 的类型是 char*;
str[0] 的类型是 char[81];

它俩类型不是也不一致嘛

专升本备考中!!!
2022-10-22 13:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:0 
数组 包含 地址值 及 元素数量
char[81] 相当于 白马
char* 相当于 马
在需要 马 的地方,给个 白马 是可以的;在需要 白马 的地方,给个 马 是不行的。
2022-10-22 15:56
fuxuming2000
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2022-9-27
收藏
得分:0 
回复 2楼 rjsp
我想在b站上先看看视频,浙大翁凯的看了,开始还行到后来 结构 链表  可变数组就看不懂了,要学习这些看谁的视频或书好一点呀
2022-10-23 08:44
快速回复:这里为什么写成sp=str或者sp=&str[0]会报错?
数据加载中...
 
   



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

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