鱼C论坛

 找回密码
 立即注册
查看: 832|回复: 12

[已解决]C语言小白

[复制链接]
发表于 2020-4-13 10:43:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
想问这是怎么了?
#include <stdio.h>

int main()
{
        char str1[25] = "wo ai de ren bu ai wo";
        char str2[25] = "so sad story it is.";
        char str3[24], str4[24];
        str3[24] = "Long long ago";
        str4[24] = "one thurand years ago";
        printf("%s, %s", str1, str2);
        printf("%s, %s", str3, str4);
        return 0;
}
wo ai de ren bu ai wo, so sad story it is.烫烫烫烫烫烫烫烫烫烫烫烫d烫烫烫蘳o sad story it is., 烫烫烫烫烫烫烫烫烫烫烫烫t烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫蘢烫烫烫蘳o sad story it is.
最佳答案
2020-4-13 11:00:21
本帖最后由 悠悠2264 于 2020-4-13 11:31 编辑

1.你的str3和str4的索引只有0-23,24就越界了。
2.这样只能给字符数组里的一个索引赋值一个字符,所以不能这样赋值字符串,需要用到<string.h>里的strcpy来赋值,他会给每个索引存储一个字符,代码如下:
#include <stdio.h>
#include <string.h>

int main()
{
        char str1[25] = "wo ai de ren bu ai wo";
        char str2[25] = "so sad story it is.";
        char str3[24], str4[24];
        strcpy(str3,"Long long ago");
        strcpy(str4,"one thurand years ago");
        printf("%s, %s", str1, str2);
        printf("%s, %s", str3, str4);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-13 10:46:24 | 显示全部楼层
这是问题
批注 2020-04-13 104539.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-13 10:49:10 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2020-4-13 10:54 编辑


数组越界
8,9行改成
str3="Long long ago";
str4="one thurand years ago";
而且你的thousand拼错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-13 10:59:58 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-13 10:49
数组越界
8,9行改成而且你的thousand拼错了

第7行怎么办
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-13 11:00:21 | 显示全部楼层    本楼为最佳答案   
本帖最后由 悠悠2264 于 2020-4-13 11:31 编辑

1.你的str3和str4的索引只有0-23,24就越界了。
2.这样只能给字符数组里的一个索引赋值一个字符,所以不能这样赋值字符串,需要用到<string.h>里的strcpy来赋值,他会给每个索引存储一个字符,代码如下:
#include <stdio.h>
#include <string.h>

int main()
{
        char str1[25] = "wo ai de ren bu ai wo";
        char str2[25] = "so sad story it is.";
        char str3[24], str4[24];
        strcpy(str3,"Long long ago");
        strcpy(str4,"one thurand years ago");
        printf("%s, %s", str1, str2);
        printf("%s, %s", str3, str4);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-13 11:25:50 | 显示全部楼层
悠悠2264 发表于 2020-4-13 11:00
1.你的str3和str4的索引只有0-23,24就越界了。
2.这样只能给字符数组里的一个索引赋值一个字符,所以不能 ...

找不到strcpy函数,strcpy_s也不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-13 11:32:24 | 显示全部楼层
TToenn 发表于 2020-4-13 11:25
找不到strcpy函数,strcpy_s也不行

需要#include <string.h>,导入string.h头文件,strcpy是这个头文件里的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-13 11:38:43 | 显示全部楼层
悠悠2264 发表于 2020-4-13 11:32
需要#include ,导入string.h头文件,strcpy是这个头文件里的

导入了,说是没有或者不安全
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-13 11:41:08 | 显示全部楼层
本帖最后由 悠悠2264 于 2020-4-13 11:44 编辑
TToenn 发表于 2020-4-13 11:38
导入了,说是没有或者不安全


你用的什么编译器?我这好好的啊。我用的是Dev-C++
PrtSc_2020041311423942SS.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-13 11:56:38 | 显示全部楼层
悠悠2264 发表于 2020-4-13 11:41
你用的什么编译器?我这好好的啊。我用的是Dev-C++

VS 2019
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-13 12:03:55 | 显示全部楼层

建议使用小甲鱼推荐的Dev-C++和Code::Blocks,vs有些库没有(比如string.h),添加这些库很麻烦。下载地址参考小甲鱼的:https://fishc.com.cn/forum.php?m ... peid%26typeid%3D571
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-13 12:25:26 | 显示全部楼层
#define _CRT_SECURE_NO_WARNINGS
记住这行代码,写用VS写C程序时,复制粘贴在代码的最前面。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-4-14 10:42:37 | 显示全部楼层
悠悠2264 发表于 2020-4-13 12:03
建议使用小甲鱼推荐的Dev-C++和Code::Blocks,vs有些库没有(比如string.h),添加这些库很麻烦。下载地 ...

真是。。。爽!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 06:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表