我正在做一个学校项目,为此我需要获得一个随机电影标题并用星号替换字符,用户稍后必须在程序中猜测电影,有点像刽子手。
在下面的函数中,我尝试随机生成电影标题然后存储它。然后我想将字母转换为星号并将它们存储在自己的数组中以供稍后在程序中使用。
但是,我在这方面完全没有运气!我已经这样做了很长时间,但我就是不知道该怎么做!我知道代码本身可能很糟糕,但我觉得我必须发布一些东西来传达这个想法。
谢谢!
#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);
}
最佳答案
这段代码:
char title[500];
char movies[45][500];
...
t.title[500] = movies[number];
其中有 3 个 fatal error :
title
是char[500]
(字符串),movies
是char[45][500]
(45 个字符串的数组),您正在使用不同的类型- 无法在 C 中复制带有赋值的字符串
- 即使可以以某种方式忽略前 2 个,数组中的元素也会从
0
开始索引,即title
包含存储在的char
索引从0
到499
。
您可能想做的是:
strcpy(t.title, movies[number]);
<小时/>
另请注意
FILE *fopen()
不声明变量,它声明一个不带参数的函数,并返回一个指向FILE
的指针(参见“最令人烦恼的解析”),因为你从来没有不带参数调用 fopen
(编译器甚至不应该允许你这样做),这个声明完全没用。
关于c - 将字符存储在数组中,C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22276610/