#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
.
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.