我正在做一个学校项目,为此我需要获得一个随机的电影标题并用星号替换字符,用户将不得不在程序后期猜测电影,有点像刽子手。
在以下功能中,我试图随机生成一个电影片名,然后存储它。然后我想将这些字母转换为星号并将它们存储在自己的数组中,以便稍后在程序中使用。
但是,我一直没有运气!我已经很长时间了,而且我无法想到如何解决这个问题!我知道代码本身可能很糟糕,但我觉得我必须发布一些东西才能得到这个想法。
谢谢!
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
typedef struct {
char title[500];
char hiddentitle[500];
}Title;
char Film(Title t){
FILE *fopen(), *fp;
fp = fopen("Film.txt", "r");
int i=0;
int j;
int number;
int lenMovie;
char c, film;
char movies[45][500];
int val =0;
while( i<45 ){
fgets(movies[i], sizeof(movies[i]), fp);
i++;
}
srand(time(NULL));
number = (1+(rand() % 45));
t.title[500] = movies[number];
printf("%s", t.title);
lenMovie = strlen(t.title);
while(val <= lenMovie)
{
c = t.title[val];
if(c >= 'a' && c<= 'z'){
t.hiddentitle[val] == '*';
}
else if(c >= 'A' && c<= 'Z'){
t.hiddentitle[val] == '*';
}
else{
t.hiddentitle[val] == c;
}
val++;
}
printf("\n%s", t.hiddentitle);
fclose(fp);
}
int main(void){
Title t;
Film (t);
}
答案 0 :(得分:0)
此代码:
char title[500];
char movies[45][500];
...
t.title[500] = movies[number];
有3个致命错误:
title
为char[500]
(字符串),movies
为char[45][500]
(45个字符串的数组),您使用的是不同类型0
编入索引,即title
包含存储在char
到{的索引的0
{1}}。你可能想要做的是:
499
另请注意
strcpy(t.title, movies[number]);
不声明变量,它声明一个不带参数的函数并返回指向FILE *fopen()
的指针(参见“最烦恼的解析”),因为你从不调用{{ <}没有参数(编译器甚至不允许你这样做),这个声明完全没用。