简体   繁体   中英

I keep getting a C2198 Error in my program for C

#include <stdio.h>
void wordGenerator(unsigned int number[]); // prototype
// function to form words based on phone number
void wordGenerator(unsigned int number[])
{
    unsigned int loop; // loop counter
    unsigned int loop1; // loop counter for first digit of phone number
    unsigned int loop2; // loop counter for second digit of phone number
    unsigned int loop3; // loop counter for third digit of phone number
    unsigned int loop4; // loop counter for fourth digit of phone number
    unsigned int loop5; // loop counter for fifth digit of phone number
    unsigned int loop6; // loop counter for sixth digit of phone number
    unsigned int loop7; // loop counter for seventh digit of phone number
    FILE* foutPtr; // output file pointer
    char* phoneLetters[10] = { "", "", "ABC", "DEF", "GHI", "JKL",
    "MNO", "PRS", "TUV", "WXY" }; // letters corresponding to each number
    if ((foutPtr = fopen_s("phone.out", "w")) == NULL) // open output file
        puts("Output file was not opened.");
    else
    { // print all possible combinations
        for (loop1 = 0; loop1 <= 2; ++loop1)
            for (loop2 = 0; loop2 <= 2; ++loop2)
                for (loop3 = 0; loop3 <= 2; ++loop3)
                    for (loop4 = 0; loop4 <= 2; ++loop4)
                        for (loop5 = 0; loop5 <= 2; ++loop5)
                            for (loop6 = 0; loop6 <= 2; ++loop6)
                                for (loop7 = 0; loop7 <= 2; ++loop7)
                                    fprintf(foutPtr, "%c%c%c%c%c%c%c\n",
                                        phoneLetters[number[0]][loop1],
                                        phoneLetters[number[1]][loop2],
                                        phoneLetters[number[2]][loop3],
                                        phoneLetters[number[3]][loop4],
                                        phoneLetters[number[4]][loop5],
                                        phoneLetters[number[5]][loop6],
                                        phoneLetters[number[6]][loop7]);
        // output phone number
        fputs("\nPhone number is ", foutPtr);
        // loop through digits
        for (loop = 0; loop <= 6; ++loop)
        {
            // insert hyphen
            if (loop == 3)
                fprintf(foutPtr, "-");
            fprintf(foutPtr, "%d", number[loop]);
        } // end for
    } // end else
    fclose(foutPtr); // close file pointer
} // end function wordGenerator
int main(void)
{
    unsigned int loop; // loop counter
    unsigned int phoneNumber[7] = { 0 }; // holds phone number
    // prompt user to enter phone number
    printf("%s", "Enter a phone number one digit at a time");
    puts(" using the digits 2 thru 9:");
    // loop 7 times to get number
    for (loop = 0; loop <= 6; ++loop) {
        printf("%s", "? ");
        scanf_s("%d", &phoneNumber[loop]);
        // test if number is between 0 and 9
        while (phoneNumber[loop] < 2 || phoneNumber[loop] > 9) {
            printf("%s", "\nInvalid number entered. Please enter again: ");
            scanf_s("%d", &phoneNumber[loop]);
        } // end while
    } // end for
    wordGenerator(phoneNumber); // form words from phone number
} // end main

I am trying to write a C program that, given a seven-digit number, writes to a file every possible seven-letter word corresponding to that number. However I keep getting an error saying 'fopen_s': too few arguments for call in line 17. Can anyone help me figure this out? I am using Visual studios.

Based on the arguments you're using I think you want fopen instead of fopen_s .

https://en.cppreference.com/w/c/io/fopen

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM