在数组中存储字符,C

时间:2014-03-08 23:49:52

标签: 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);

    }

1 个答案:

答案 0 :(得分:0)

此代码:

char title[500];
char movies[45][500];
...
t.title[500] = movies[number];

有3个致命错误:

  • titlechar[500](字符串),movieschar[45][500](45个字符串的数组),您使用的是不同类型
  • 您无法在C
  • 中复制带作业的字符串
  • 即使以前的2可以以某种方式被忽略,数组中的元素也会从0编入索引,即title包含存储在char到{的索引的0 {1}}。

你可能想要做的是:

499

另请注意

strcpy(t.title, movies[number]);

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