C程序产生奇怪的输出

Prinzeono Key

在学习CI的过程中,我决定创建一个结构,使我可以在其中提供鱼的大小,我的问题是为什么当我编写这段小代码时:

#include <stdio.h>
#include <string.h>

struct fish
    {
        char catfish[9]; //reserve memory for 9 chars
        char goldfish[10]; //reserve memory for 10 chars
        char mackrel;
        char oldfish;
    };

int main()
{
    struct fish typeof_fish;

    strcpy(typeof_fish.catfish, "Big Fish\n");
    strcpy(typeof_fish.goldfish, "Small Fish\n");
    printf("%s\n", typeof_fish.catfish);

    return 0;


}

输出产生“大鱼小鱼”输出

但是当我重写最上面的代码并更改char catfish [9]时烧char鱼[10]

#include <stdio.h>
#include <string.h>

struct fish
    {
        char catfish[10]; //reserve memory for 10 chars
        char goldfish[10]; //reserve memory for 10 chars
        char mackrel;
        char oldfish;
    };

int main()
{
    struct fish typeof_fish;

    strcpy(typeof_fish.catfish, "Big Fish\n");
    strcpy(typeof_fish.goldfish, "Small Fish\n");
    printf("%s\n", typeof_fish.catfish);

    return 0;


}

在这里产生“大鱼”输出

预先感谢您对这个令人困惑的错误的解答

迈克尔·比安科尼

catfish[9]strcpy时,您没有为null终止符留出足够的空间"Big Fish\n"该字符串的长度为9个字符,这意味着您需要一个大小为10的缓冲区来存储空终止符。

如果字符串缺少空终止符,则输出将具有不确定的行为,因为程序无法知道字符串的结尾。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C程序的奇怪输出

来自分类Dev

简单的C程序,奇怪的输出

来自分类Dev

C程序奇怪的输出和错误的输出

来自分类Dev

在C中使用char / string指针会产生奇怪的输出

来自分类Dev

直方图程序给出奇怪的输出C ++

来自分类Dev

OpenCL C程序提供奇怪的输出

来自分类Dev

使用'say'产生的奇怪输出

来自分类Dev

使用'say'产生的奇怪输出

来自分类Dev

程序产生错误的输出

来自分类Dev

用于计算两点之间距离的程序会产生奇怪的输出。

来自分类Dev

C ++ Mandelbrot程序将无法产生正确的输出

来自分类Dev

如何调试产生意外输出的 C 程序?

来自分类Dev

NAudio的FFT功能产生奇怪的输出

来自分类Dev

在LINQ中使用SkipWhile()产生奇怪的输出

来自分类Dev

简单printf()产生的奇怪垃圾输出

来自分类Dev

NAudio的FFT功能产生奇怪的输出

来自分类Dev

C奇怪而有趣的程序输出

来自分类Dev

为什么C程序使用Scanf给出奇怪的输出?

来自分类Dev

c中的“计算电路的面积和周长”程序...奇怪的输出

来自分类Dev

Netbeans C ++奇怪的输出

来自分类Dev

奇怪的文件输出C ++

来自分类Dev

简单的Java程序奇怪的输出

来自分类Dev

是什么导致c中的printf命令产生此奇怪的输出,以及如何阻止它发生呢?

来自分类Dev

HTML串联函数在Google表格中产生奇怪的输出

来自分类Dev

在文件循环内使用ssh时产生奇怪的输出

来自分类Dev

使用Perl在Bash脚本中产生奇怪的意外输出

来自分类Dev

R:readline产生奇怪的不需要的输出

来自分类Dev

tac 命令的选项会产生奇怪的输出 [理解问题]

来自分类Dev

在 R 中切片向量会产生奇怪的输出