小编Rob*_*nau的帖子

字符串和结构的奇怪行为

我一直遇到下面的代码问题,我想了解为什么它不起作用.当我直接在结构中使用一个从函数返回的字符串时,我得到了一个奇怪的行为.

第一个printf没有问题,与第二个和第三个相同,但由于某种原因,最后一个进入分段错误或只打印一个随机字符串.如果我尝试在结构中使用字符指针而不是数组,则问题不会出现.

#include <stdio.h>

typedef struct
{
    int value;
    char string[23];
} Test;

Test func()
{
    Test nuovo = {5, "test"};
    return nuovo;
}

int main()
{
    Test test = func();
    printf("\n1: %d", func().value);

    printf("\n2: %s", test.string);

    printf("\n3: %s", &(func().string[0]));

    printf("\n0: %s", func().string);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

====================[ Build | test | Debug ]====================================
"C:\Program Files\JetBrains\CLion 2018.2.6\bin\cmake\win\bin\cmake.exe" --build C:\Users\rober\CLionProjects\test\cmake-build-debug --target test -- -j 4
"C:\Program Files\JetBrains\CLion 2018.2.6\bin\cmake\win\bin\cmake.exe" -SC:\Users\rober\CLionProjects\test -BC:\Users\rober\CLionProjects\test\cmake-build-debug --check-build-system CMakeFiles\Makefile.cmake 0
C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\Makefile2 test
mingw32-make.exe[1]: Entering directory 'C:/Users/rober/CLionProjects/test/cmake-build-debug' …
Run Code Online (Sandbox Code Playgroud)

c string printf struct

6
推荐指数
1
解决办法
98
查看次数

标签 统计

c ×1

printf ×1

string ×1

struct ×1