首页 > 解决方案 > 将 files.txt 设置为代码块中的程序参数

问题描述

我的问题很简单,我是c语言的初学者,我目前正在开发代码块上的刽子手游戏。为此,对我施加了限制,即我的字典所在的文件,我必须将其作为参数传递给我的程序。我在研究中看到,在项目 -> 设置程序的参数 .. 选项卡中,我们可以添加参数,但我不能将我的文本文件作为参数传递。请问有人有解决办法吗?太感谢了

我这样传递:

但是当我构建我的程序时,它没有检测到我的文件。

这是尝试读取文件的代码

char *read_file(int ac, char **av, int *lifes, char **word)
{
 int fd = -1;
 int nb_caractere = 0;
 char *buffer = calloc(1,sizeof(char));

 if((fd = open(av[1], O_RDONLY)) == -1)
 {
   printf("Aucun fichier ou dossier. \n");
   return (NULL);
 }
 lseek(fd, 0, SEEK_SET);
 while(read(fd, buffer, 1) > 0)
 {
   nb_caractere++;
 }
 lseek(fd, 0, SEEK_SET);
 buffer = calloc(nb_caractere+1, sizeof(char));
 memset(buffer, 0, nb_caractere+1);
 read(fd, buffer, nb_caractere);
 close(fd);
 return (buffer);
}

这个函数的主要调用方式是:

int main(int ac, char **av)
{
  int lifes = 10;
  char *word = NULL;
  char *hide_word = NULL;

  srand(time(NULL));
  if(ac < 2 || ac > 3)
  {
    printf("Nombres d'arguments incorrect !\n");
    return (84);
  }
  if(ac == 3)
  { 
    lifes = atoi(av[2]);
  }
  if(init_game(lifes, &word, &hide_word, read_file(ac, av, &lifes, 
  &word)) == 84 )
  {
    free(word);
    return (84);
  }
  game_loop(lifes, word, hide_word);
  free(word);
  free(hide_word);
  return 0;
}

此代码的输出是“aucun fichier ou dossier”

标签: ccodeblocks

解决方案


推荐阅读