【发布时间】:2014-01-23 15:05:33
【问题描述】:
我正在学习基本的 C 编程课程,并且正在尝试创建一个刽子手游戏。在过去的三个小时里,我一直遇到一个问题,而且我没有变得更聪明。
基本上,我创建了一个函数,它从文本文件中读取随机行,然后将其复制到字符串中。之后,我想将该字符串复制到函数之外的另一个字符串。这是因为主游戏应该是完全用函数构建的。
这是从文本文件中读取随机单词并将其复制到字符串的函数:
char datorns_val()
{
char ordlista[20];
char valt_ord[20];
int raknare = 0;
srand(time(NULL));
random = rand()%10+0;
ptr_file =fopen("hangman.txt","r");
if (!ptr_file)
{
return 1;
}
while (fgets(ordlista,20, ptr_file)!=NULL)
{
raknare++;
if (raknare == random)
strcpy(valt_ord, ordlista);
}
return valt_ord;
}
完成此操作后,我想将位于 valt_ord 中的单词复制到另一个字符串中,这时我不确定该怎么做:
char word[20];
strcpy(word,datorns_val());
我收到两个错误提示:
Invalid conversion from 'char' to 'const char*'
和
initializing argument 2 of 'char* strcpy(char*, const char*)'
我在这里使用strcpy() 两次是在正确的轨道上还是我完全迷路了?我在没有函数结构的情况下尝试了我的构建,只是一个接一个地输入所有代码,如果用简单的char word = valt_ord. 替换第二个strcpy(),它就可以工作了
谢谢,乔纳森
(对不起,如果我的代码难以理解,我是瑞典语,我的第二语言是英语)
【问题讨论】:
-
您正在返回一个在堆栈上的 char 数组,所以这不起作用。您需要在堆上返回它的副本,并使用
malloc分配。