c - 用 C 语言在文本文档中搜索单词的函数
问题描述
我编写了这个函数来搜索一个文本文件(目前只是说“立方体”)中的一个单词,然后调用相应的函数。但是,我收到“错误:未找到功能”。信息。
谁能帮我找出我的问题?
void read(){
const char cube[4] = "cube";
const char cone[4] = "cone";
const char sphere[6] = "sphere";
const char cylinder[8] = "cylinder";
char line[1024] ;
FILE* fp = fopen("instructions.txt", "r") ;
while (fgets(line , sizeof(line) , fp )!= NULL)
{
if (strstr(line , cube)!= NULL){
void cube();
}
else if (strstr(line , cone)!= NULL){
void cone();
}
else if (strstr(line , sphere)!= NULL){
void sphere();
}
else if (strstr(line , cylinder)!= NULL){
void cylinder();
}
else {
printf("Error: No Function Found./n");
}
}
fclose(fp);
free(line);
return;
}
解决方案
基本上,它归结为:在编写 C 代码时,您不能冒险了解某事的作用或某事的工作原理。您实际上必须知道您编写的每一行代码的作用。没有尝试和错误的学习方式,因为有些事情可能看起来有效,而实际上它们是等待使您的程序崩溃的休眠错误。
我在您的代码中发现以下问题:
- 没有
#include
图书馆。我假设你只是故意遗漏了这个。 void read()
空括号在 C 中是过时的风格(但在 C++ 中非常好)。在编写 C 代码时,您应该始终使用void read (void)
.cube[4] = "cube"
C 中的字符串以空值结尾。你没有分配足够的空间。研究一下:字符数组应该如何用作字符串?void cube();
等等我不知道你认为这是做什么的,调用一个函数?这不是你调用函数的方式。此外,由于您有一个名为的局部范围变量,因此cube
您会遇到命名冲突。因此该函数必须使用不同的名称。free(line);
不允许free
在未分配的内存上使用malloc
. 只需删除此行。return;
在返回的函数中不是必需的void
。
推荐阅读
- python - OpenCV 没有 drawKeypoints 函数
- javascript - 在 jsx 中使用 () => vs this.something
- sql-server - 为什么迁移后 SSIS 包会因签名无效而失败?
- parallel-processing - 为什么具有单个生产者/消费者的生产者消费者队列不需要互斥锁?
- android - 检查 Firebase 中是否存在值
- python - Scrapy 链接已抓取但未抓取
- sql - BEGIN 和 END 中的 SQL UPDATE
- android - 从自己的服务器更新 android 应用程序 [Android]
- unix - 使用 SED、ECHO 和 C++FILT 去除 txt 文件中的所有 c++ 符号
- c# - C#/Unity - 如何只获取不同的值(带阈值)和特定的计数?