【发布时间】:2012-12-07 10:43:23
【问题描述】:
#include <stdio.h>
void read_string(char prompt[], char returned[], int MAX)
{
fputs(prompt, stdout);
fflush(stdin);
fgets(returned, MAX, stdin);
}
main()
{
char string[0][10];
read_string("String you want to return ", string[0], sizeof string[0]);
printf("The returned string is %s",string[0]);
fflush(stdin);
getchar();
}
这段代码来自我做的一个练习(修改),只是指出我不能很好理解的代码行。它假设在循环中返回各种字符串,因此我只是声明了 STRING [0][100],因为它只是一个示例。
嗯,我知道变量“字符串”是这样进入函数的 字符串 = 返回 然后在从键盘(fgets)获取字符串后如何返回到main(),我的意思是它真的返回并隐式执行此操作吗? 返回=字符串
编译器在编译时也会给我这个消息(虽然它在运行时确实返回了一个字符串)
[警告] 不推荐将字符串常量转换为 'char*' [-Wwrite-strings]
我是学习函数及其结构的新手,我还没有看到指针,但是从我目前所读的内容来看,您需要指针来返回字符串。请原谅任何严重的错误及其编写不佳的代码我非常感谢有关解决此问题的任何指导。
这里的问题主要是关于字符串如何返回,而不需要使用return,我的意思是字符串保存在名为“returned”的变量中但是它如何摆脱它,然后回到 main 中。
【问题讨论】:
-
确实我没有明确提出这个问题。这里的问题主要是关于字符串如何返回,不需要使用return
-
read_string()中的这一行很奇怪:(prompt, stdout);。它评估prompt并将其丢弃;然后它评估stdout并将其也扔掉。可以省略代码而不改变程序的外部行为。 -
这实际上是我的一个错误,我的意思是把 fputs(prompt,stdout);