我正在用 C 语言做一个简单的数据库管理项目。但是当我运行这段代码时,我得到了错误。

Posted

技术标签:

【中文标题】我正在用 C 语言做一个简单的数据库管理项目。但是当我运行这段代码时,我得到了错误。【英文标题】:I am doing a simple database management project in C .but when i run this code i get error . 【发布时间】:2015-03-15 16:12:16 【问题描述】:

我正在尝试将用户提供的文件名与字符串数组进行比较。当我运行此代码时,我得到错误: 在函数`add_record'中: ']' 标记前的语法错误

另外,即使我将代码从“开始”删除到“停止”,我也会收到错误消息: i:\gw\lib\crt2.o(.text+0x8) 在函数_mingw_CRTStartup': [Linker error] undefined reference to__dyn_tls_init_callback' [链接器错误] 未定义对 `__cpu_features_init' 的引用 i:\gw\lib\crt2.o(.text+0x8) ld 返回 1 个退出状态

请帮帮我。谢谢!

void add_record()

 FILE *fp;
 char filename[25],fname_check[NO_OF_FILE][25];
 char tester;
 int i;

 printf("Type the name of the file you want to store the record in : ");
 scanf("%s",filename);
 //start
 for(i=0;i<sizeof(fname_check);i++)
 
                                   if(strcmp(fname_check[i][],filename) == 0) printf("File already exists!\n");
                                   break;
                                   
 printf("The file will be overwritten if you enter the same name.....\n");                                  

 printf("Type the name of the file you want to store the record in : ");
 scanf("%s",filename);
   //end                              

 fp = fopen(filename,"w");
 if(fp == NULL)
 
       printf("Sorry,File cannot be opened!");
       getch();
       exit(0);
       

 while(1)
 
         fflush(stdin);
  printf("\nEnter name : ");
  gets(pro.name);
  printf("Enter age : ");
  scanf("%d",&pro.age);
  printf("Enter gender : ");
  gets(pro.gender); 
  printf("Enter phone : ");
  scanf("%d",&pro.phone); 
  printf("Enter email : ");
  gets(pro.email);
  printf("Enter location : ");
  gets(pro.location);
  printf("Enter bio : ");
  gets(pro.bio);

  printf("If you want to add more records press any key... or press ESC key... ");
  tester = getche();
  if(tester == 27) break;
 
 fclose(fp);

enter code here

【问题讨论】:

fname_check[i][] 无效,我认为 [Linker error] undefined reference to `__cpu_features_init' i:\gw\lib\crt2.o(.text+0x8) ld 返回 1 exit status - 你告诉运行时在哪里可以找到所有它需要共享 .so/.dll 资产吗? 无关,每次有人使用 gets() ,一只小猫就死了。它是如此邪恶,已从标准库中删除。使用fgets()getline()。前者是标准的,后者是 gnu 和 POSIX.1-2008 的一部分。祝你好运。 @WhozCraig 我已经评论了整个代码仍然没有运行......虽然其他程序运行良好 【参考方案1】:

fname_check[i][] 无效。您只需要fname_check[i] 这是一个字符串。

此外,您必须循环到i &lt; sizeof(fname_check)\sizeof(fname_check[0]),因为sizeof(fname_check) 将给出数组的总大小(以字节为单位)。

【讨论】:

我试过了,但是这个错误又来了 i:\gw\lib\crt2.o(.text+0x8) In function _mingw_CRTStartup': [Linker error] undefined reference to__dyn_tls_init_callback' [Linker error] undefined reference到 `__cpu_features_init' i:\gw\lib\crt2.o(.text+0x8) ld 返回 1 退出状态 那么你一定有链接器错误。可能是因为你没有告诉编译器在哪里可以找到它需要的 .so / .dll 文件。 @Kishor 您的编译器找不到库。你用的是什么编译器? 这有关系吗?其他程序运行良好.. MinGW @Kishor 为编译器配置库位置。也许this could help【参考方案2】:

我找到了解决方案...我在驱动器中安装了另一个 mingw..我删除了一个,现在一切正常...

【讨论】:

以上是关于我正在用 C 语言做一个简单的数据库管理项目。但是当我运行这段代码时,我得到了错误。的主要内容,如果未能解决你的问题,请参考以下文章

c语言编写一个通讯录系统 用简单一点的c😊

请大家帮我做一下这道C语言编程的题!

我用c语言写了一个小的计算器程序,但是我想给这个程序做一个windows界面,

用C语言做一个简单的原神抽卡小游戏

用C语言做一个简单的扫雷游戏

用spring做一个简单的员工管理系统