鱼C论坛

 找回密码
 立即注册
查看: 69|回复: 11

[已解决]为什么我的VIM输出的是:Fish.com啊?

[复制链接]
发表于 前天 21:22 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 moqizhong 于 2025-3-1 21:23 编辑
#include <stdio.h>
#include <string.h>

int main()
{
    char str1[6] = "I love";
    char str2[] = "FishC.com";

    strcat(str2, " ");
    strcat(str1, str2);

    printf("str1 : %s\n", str1);

    return 0;
}
最佳答案
前天 21:22
你的代码之所以输出有误,是因为你在使用字符串时存在两个问题:

1. 你用 char 类型来保存字符串,但实际上应该使用 char* 类型。
2. 使用 strcat 时,第一个参数应该是用于存放拼接结果的数组,而且它需要有足够的空间来存放结果字符串。

以下是修正后的代码:
#include <stdio.h>
#include <string.h>

int main()
{
    char str1[20] = "I love";
    char str2[] = "FishC.com";

    strcat(str1, " ");
    strcat(str1, str2);

    printf("str1 : %s\n", str1);

    return 0;
}

做了以下修改:

  • char str1 改为 char str1[20] 以确保有足够的空间来存放拼接后的字符串。
  • 修正了 strcat 的使用,确保 str1 是拼接后的结果存放位置。


这样就可以正常输出 "I love FishC.com"。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
微信图片_20250301212023.png
微信图片_20250301212040.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 前天 21:22 | 显示全部楼层    本楼为最佳答案   
你的代码之所以输出有误,是因为你在使用字符串时存在两个问题:

1. 你用 char 类型来保存字符串,但实际上应该使用 char* 类型。
2. 使用 strcat 时,第一个参数应该是用于存放拼接结果的数组,而且它需要有足够的空间来存放结果字符串。

以下是修正后的代码:
#include <stdio.h>
#include <string.h>

int main()
{
    char str1[20] = "I love";
    char str2[] = "FishC.com";

    strcat(str1, " ");
    strcat(str1, str2);

    printf("str1 : %s\n", str1);

    return 0;
}

做了以下修改:

  • char str1 改为 char str1[20] 以确保有足够的空间来存放拼接后的字符串。
  • 修正了 strcat 的使用,确保 str1 是拼接后的结果存放位置。


这样就可以正常输出 "I love FishC.com"。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 21:28 | 显示全部楼层
FishC 发表于 2025-3-1 21:22
你的代码之所以输出有误,是因为你在使用字符串时存在两个问题:

1. 你用 char 类型来保存字符串,但实 ...

char* 类型 是什么类型?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 21:28 | 显示全部楼层
moqizhong 发表于 2025-03-01 21:28
FishC 发表于 2025-3-1 21:22
你的代码之所以输出有 ...


什么是 char* 类型?

char* 类型是一种指针类型,用于存储指向字符数组(也即是字符串)的指针。简单来说,char* 可以用于引用字符串的起始地址。在C语言中,字符串实际上是以'\0'(null字符)结尾的字符数组。

使用示例:

以下是使用 char* 类型的简单示例:
char* greeting = "Hello, FishC!";

在这里,greeting 是一个指针,指向字符串 "Hello, FishC!" 在内存中的起始位置。

注意事项:

  • char* 类型指向的内存通常是常量字符串,不能随意修改。
  • 要操作或修改字符串,需要使用字符数组(例如 char str[100])来确保有足够的存储空间。


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 21:29 | 显示全部楼层
FishC 发表于 2025-3-1 21:28
什么是 char* 类型?

char* 类型是一种指针类型,用于存储指向字符数组(也即是字符串)的指针。简 ...

我还没学到指针呢,给我解释一下被
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 21:30 | 显示全部楼层
moqizhong 发表于 2025-03-01 21:29
FishC 发表于 2025-3-1 21:28
什么是 char* 类型?
...


指针简介

虽然你还没有学习到指针,但理解它的基本概念可以帮助你更好地学习C语言。

指针是一个存储内存地址的变量。你可以把它看作是一个能够指向某个地址的小工具。在C语言中,指针非常重要,因为它允许你直接访问和操作内存。

基本概念
  • 地址:每个变量都存储在内存中的一个特定位置,这个位置叫做地址。
  • 指针变量:保存地址的变量。例如,char* 是一个指向字符或字符串的指针。
  • 解引用:通过指针访问存储在其指向的地址中的值。


示例

下面是一个简单的例子,展示如何声明和使用指针:
#include <stdio.h>

int main() {
    int value = 42;
    int* ptr = &value;  // ptr 保存了 value 的地址

    printf("Value: %d\n", value);          // 打印值
    printf("Address of value: %p\n", ptr); // 打印地址
    printf("Value via ptr: %d\n", *ptr);   // 通过指针访问值

    return 0;
}

在这个例子中:
- int* ptr 声明了一个指向整数的指针。
- &value 获取变量 value 的地址。
- *ptr 解引用指针,访问并打印存储在地址中的值。

希望这能帮助你对指针有一个基本的了解!指针在C语言中非常强大且有用,尽管它们最初可能会令人困惑。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 21:34 | 显示全部楼层
FishC 发表于 2025-3-1 21:30
指针简介

虽然你还没有学习到指针,但理解它的基本概念可以帮助你更好地学习C语言。
#include <stdio.h>
#include <string.h>

int main()
{
    char str1[] = "I love";
    char str2[20] = "FishC.com";

    strcat(str1, " ");
    strcat(str1, str2);

    printf("str1 : %s\n", str1);

    return 0;
}
这样改行吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 21:35 | 显示全部楼层
moqizhong 发表于 2025-03-01 21:34
FishC 发表于 2025-3-1 21:30
指针简介

虽然你还 ...


你的代码中存在几个问题,主要是字符数组的声明和字符串连接。以下是改正后的代码:
#include <stdio.h>
#include <string.h>

int main()
{
    char str1[20] = "I love";  // 为 str1 分配足够的空间
    char str2[] = "FishC.com";

    strcat(str1, " ");         // 连接空格
    strcat(str1, str2);        // 连接 str2 到 str1

    printf("str1 : %s\n", str1); // 打印结果

    return 0;
}

改正后的要点:

1. **字符数组的定义**:
   - `char str1[20]` 为 str1 分配了足够的空间来存储连接后的字符串。
   - `char str2[]` 定义了一个变量长度的字符数组来存储 "FishC.com"。

2. **字符串连接的顺序**:
   - 使用 strcat 函数连接字符串时,确保第一个参数 (str1) 有足够的空间存储结果字符串。

这样你的程序应该可以正确输出 "I love FishC.com"。如果有其他问题,随时可以问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 23:47 | 显示全部楼层

回帖奖励 +25 鱼币

这是什么终端?好像很帅的样子?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 09:28 | 显示全部楼层
小甲鱼的二师兄 发表于 2025-3-1 23:47
这是什么终端?好像很帅的样子?

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

使用道具 举报

发表于 昨天 19:54 | 显示全部楼层

看起来不像
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 19:55 | 显示全部楼层
小甲鱼的二师兄 发表于 2025-3-1 23:47
这是什么终端?好像很帅的样子?

一本正经地领鱼币(2.5/1)

我也是被这个封面吸引进来的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-3 22:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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