Предполагается, что эта программа принимает пользовательский ввод с кодом города, выполняет поиск в отдельном файле с набором телефонных номеров, перечисленных в текстовом файле, и функция поиска должна проверять номер телефона с вводимым кодом региона.чтобы увидеть, если это соответствует.Затем функция main
записывает номера телефонов в отдельный текстовый файл.
Я пытался использовать strstr
, но я решил, что лучший способ проверить это - использовать strtok
и strcmp
,это то, что у меня сейчас.
/* This program will search phone_numbers.txt for phone numbers. It will create a new file with unique area codes in each file.
(Ex: 813 area codes will go into 813_phone_numbers file).
--Brandon Yates
*/
#include <stdio.h>
#include <string.h>
int search(char *area_code, char *phone_number);
int read_line(char *str, int n);
int main() {
char area_code[3];
char phone_number[101];
char *file_name;
FILE *number_file;
FILE *new_file;
printf("Enter the area code: ");
scanf("%s", &area_code);
//area_code = ∾
read_line(area_code, 2);
number_file = fopen("phone_numbers.txt", "r");
if (number_file == NULL) {
printf("Cannot open file.\n");
return -1;
}
new_file = fopen("dest_file.txt", "a");
if (new_file == NULL) {
printf("Cannot open file.\n");
return -1;
}
//scat = strcat(area_code, file_name);
while (fgets(phone_number, sizeof(phone_number), number_file) != NULL && !feof(number_file) && !ferror(number_file)) {
if (search(area_code, phone_number))
fputs(phone_number, new_file);
}
fclose(number_file);
fclose(new_file);
printf("Output: encoded words are written to file %s", file_name);
return 0;
}
/*
Search function determines if a phone number in the input file
matches the area code.
Search function returns 1 if the phone number matches the area code
and 0 otherwise.
*/
int search(char *area_code, char *phone_number) {
printf("testing");
char *pch;
pch = strtok(phone_number, "()");
while (pch != NULL) {
if (strcmp(area_code, phone_number) == 0)
return 1;
pch = strtok(NULL, "()");
}
return 0;
}
int read_line(char *str, int n) {
int ch;
int i = 0;
while ((ch = getchar()) != '\n') {
if (i < n) {
*str++= ch;
i++;
}
}
*str = '\0'; /* terminates string */
return i; /* number of characters stored */
}
Я ожидаю, что номера телефонов будут записаны в текстовый файл, но я получаю пустой файл.Что происходит?