c - 未从主函数调用函数
问题描述
我非常担心我不了解 C 编程的基本原理。我正在从文本文件中读取数字,我将检查它们是否是素数。然而,问题是IsPrime
函数永远不会被main
函数调用。我尝试将number
变量设为全局变量和局部变量,但它不起作用。我的基本理解有那么差吗?
从文本文件中读取没有问题。它看起来像这样:
73771782 81296771 79982326 75332246 10128193
81643413 76259734 94432076 50063976 91748657
42311916 -1920042 90747362 53851612 43498487
73193311 96685173 39019033 8630045 17
因为该main
函数从不调用该IsPrime
函数,所以结果是所有数字都打印为is a prime number
.
这是代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int isPrime(int number);
int main(int argc, char **argv) {
int number = 0;
int number2 = 0;
FILE *fp = NULL;
char file_name[] = "C:\\Users\\Erlen\\Desktop\\numbers.txt";
fp = fopen(file_name, "r");
if (fp == NULL) {
printf("Error opening the file: \n");
exit(0);
}
fscanf(fp, "%d", &number);
while (number != number2) {
if (isPrime(&number) == 1) {
printf("Number: %d is a prime number \n", number);
} else {
printf("The number %d is a prime number \n", number);
}
number2 = number;
fscanf(fp, "%d", &number);
}
printf("\n");
return 0;
}
int isPrime(int number) {
for (int i = 2; i < number; i++) {
if (number % i == 0) {
return 0;
}
}
return 1;
}
解决方案
isPrime(&number)
你传递变量的地址而number
不是它的值。改成isPrime(number)
检查scanf的结果。
fscanf(fp, "%d", &number);
=>
if(fscanf(fp, "%d", &number) != 1)
{
printf("Scanf error\n");
exit(0);
}
推荐阅读
- python - Python 通过使用 pd.groupby 查找学生评估的数量并插入每个评估的分数
- transactions - 带有查询生成器的 TypeORM 事务
- xamarin.forms - 找不到 Xamarin.forms 中的 CarouselView
- iphone - 苹果手机连接电脑,电脑无法识别设备
- java - 使用 Java 访问 Windows 中的环境变量失败
- javascript - JavaScript 中的 do/while 混淆
- javascript - Next.js API 将 FormData 转发到外部 API
- swift - Swift中大括号后跟类名的语法含义
- sql - 有没有办法在不使用子查询的情况下根据不同的行计算平均值?
- algorithm - 如何通过替换循环来最小化图的顶点?