这里是我要做的事的一个例子:
#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
问题是getstring()
返回一个指向本地数组的指针。函数返回时,此数组将被破坏,因此它可以包含垃圾。它也可以保持不变。那是不确定的行为。