我如何在函数之间传递const char *?

问题描述 投票:0回答:1

这里是我要做的事的一个例子:

#include <stdio.h>

FILE* f;
const char* getstring()
    {
    f = fopen ("hello.txt", "r");
    char x[200];
    for (int i = 0; i < 200; i++) x[i] = 0;
    for (int c = getc(f), i = 0; (c != EOF) && (i < 200); c = getc(f), i++)
        x[i] = c;
    fclose(f);
    printf ("getstring(): x = %s", x);
    const char* y = x;
    printf ("getstring(): y = %s", y);
    return y;
    }

void printstring (const char* string)
    {
    printf ("%s", string);
    }

int main()
    {
    printstring(getstring());
    printf ("\nprintf: %s", getstring());
    return 0;
    }

并且输出是:

getstring(): x = Hello World
getstring(): y = Hello World
���getstring(): x = Hello World
getstring(): y = Hello World

printf: ��������

我不知道为什么printstring()函数什么都不输出而printf为什么输出随机数据,或者当我使用printstring()函数时为什么在字符串y的末尾有一些随机数据。

有什么办法解决这个问题,我在做什么错?

对不起,如果我的问题样式有趣,因为我是StackOverflow.com的新手。

这是我要执行的操作的示例:#include FILE * f; const char * getstring(){f = fopen(“ hello.txt”,“ r”);字符x [200];对于(int i = 0; i <200; i ++)...

c++ string
1个回答
0
投票

问题是getstring()返回一个指向本地数组的指针。函数返回时,此数组将被破坏,因此它可以包含垃圾。它也可以保持不变。那是不确定的行为。

© www.soinside.com 2019 - 2024. All rights reserved.