Это код C, который у меня есть.Я читаю имя и фамилию из входного файла, но проблема в том, что мне нужно распечатать другие вещи.
Мне нужно взять строку, подобную этой:
Венера Дженсен 33770530841 vbjensen@oqtu.edu FRNO 624-771-4676 SIJ SBE WHV TVW
и удалите лишние вещи, чтобы сделать это так:
vbjensen Venus Jensen (624)771-4676
Моя проблема в том, что я получаю правильный вывод, но для некоторых строк, которые (1) не имеют FRNO или что-то эквивалентное и (2) не имеют символа @, строка по-прежнему отображается,Например, строки:
Noe Richard 974927158 nirichar@bvu.edu 079-651-3667 HAVQ
Филипп Сандовал 836145561 pusandov # luu.edu OXRU 697-728-1807 LHPN GUX
Эти строки печатать не следует, поскольку первая не имеет эквивалента FRNO, а вторая - символа @.Каждый раз, когда я пытаюсь добавить операцию форматирования для соответствия, но не для сохранения, функция sscanf программы начинает портиться.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int main()
{
// Open the input file and print an error message if we're unsuccessful.
// (the error message is mostly to help you with debugging. We won't test
// this behavior).
FILE *fp = fopen("input.txt", "r");
char line[500];
if(!fp) {
printf("Can't open input file\n");
exit(1);
}
// Counting input lines, so we can report errors.
// Keep reading input lines until we reach the end-of-file.
// Write an output line or an error message for each one.
do {
int lineCount = 1;
char fName[12];
char lName[12];
//char skipNum[12];
char email[9];
//char firstNum[4];
//char secondNum[4];
//char thirdNum[5];
//printf("%c", ch);
char phone[] = "(123)123-1234";
//fscanf(fp, "%s", fName);
//fscanf(fp, "%s", lName);
//fscanf(fp, "%[1-9]", skipNum);
//fscanf(fp, "%[a-z]", email);
sscanf (line, "%11s%11s%*[ 0-9]%9[^@]%*[^0-9]%3c-%3c-%4c", lName, fName, email, &phone[1], &phone[5], &phone[9]);
//printf("Invalid line");
//printf("\n");
// exit(1);
printf("%s", line);
printf("\n");
printf("%s", email);
printf("%s", fName);
printf("%s", lName);
//printf("%s", skipNum);
//printf("%s", firstNum);
printf("%s", phone);
printf("\n");
lineCount++;
}
while (fgets(line, sizeof line, fp));
return EXIT_SUCCESS;
}