c - 将字符存储在数组中,C

标签 c arrays file function struct

我正在做一个学校项目,为此我需要获得一个随机电影标题并用星号替换字符,用户稍后必须在程序中猜测电影,有点像刽子手。

在下面的函数中,我尝试随机生成电影标题然后存储它。然后我想将字母转换为星号并将它们存储在自己的数组中以供稍后在程序中使用。

但是,我在这方面完全没有运气!我已经这样做了很长时间,但我就是不知道该怎么做!我知道代码本身可能很糟糕,但我觉得我必须发布一些东西来传达这个想法。

谢谢!

#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 :

  • titlechar[500] (字符串),movieschar[45][500] (45 个字符串的数组),您正在使用不同的类型
  • 无法在 C 中复制带有赋值的字符串
  • 即使可以以某种方式忽略前 2 个,数组中的元素也会从 0 开始索引,即 title 包含存储在的 char索引从 0499

您可能想做的是:

strcpy(t.title, movies[number]);
<小时/>

另请注意

FILE *fopen()

不声明变量,它声明一个不带参数的函数,并返回一个指向FILE的指针(参见“最令人烦恼的解析”),因为你从来没有不带参数调用 fopen (编译器甚至不应该允许你这样做),这个声明完全没用。

关于c - 将字符存储在数组中,C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22276610/

相关文章:

c - 请求成员 .. 不是结构

java - 在文件中添加员工

security - 授权访问外部托管文件

C 编程 - 以小数形式输出结果

c - 如果 .txt 文件中存在某个单词,则将该单词复制到另一个 txt 文件

c - 错误 : array type has incomplete element type; dynamic 2D array

java - 为什么我的变量 'extra' 被修改,而我正在更改它的副本。(具体的,不是一般的查询)

c - 减少 C 中套接字之间的时间传输

c - 为什么C中的unsigned char数据类型是00000000 - 00000001 = 11111111?

python - 使用 Python 检查数据库时循环遍历目录中的文件时出现问题