首页 > 解决方案 > 未从主函数调用函数

问题描述

我非常担心我不了解 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;
}

标签: cfunctioncall

解决方案


isPrime(&number)你传递变量的地址而number不是它的值。改成isPrime(number)

检查scanf的结果。 fscanf(fp, "%d", &number);=>

if(fscanf(fp, "%d", &number) != 1) 
{
    printf("Scanf error\n");
    exit(0);
}

推荐阅读