У меня есть текстовый файл, в котором содержится много писем, в начале каждого письма есть 3 строки информации заголовка, среди которых: From :, Subject :, Date :. Я знаю, что после каждого символа ctrl-L строки заголовка, следовательно, строка c == 12.Манипулирование строк в C
В настоящее время мой из массива получает 1 строку текста либо что-то вроде:
From: Rollen Awen <[email protected]>
или
From: [email protected]
Так прямо сейчас я пытаюсь использовать разделители только сохранить адрес электронной почты, но им не уверен, как это сделать. Я должен быть в состоянии справиться с любой ситуацией, независимо от того, заключен ли она в пределах <> или если она заключена между двумя пробелами.
Например, я хочу, чтобы изменить строку в
From: Rollen Awen <[email protected]>
в только [email protected]
Или изменения
From: [email protected]
в [email protected]
...
FILE *emaildata = fopen (argv[1], "r");
while((c=fgetc(emaildata))!=EOF){
if(c==12){
numberemails++;
fgets(nothing, sizeof(nothing), emaildata);
fgets(from, sizeof(from), emaildata);
fgets(subject, sizeof(subject), emaildata);
fgets(date, sizeof(date), emaildata);
//printf("%s", from);
}
...
Одним из решений может быть: поиск строки для символа «@». как только вы обнаружите, что он вернется, пока не получите «действительные символы адреса электронной почты», а затем снова начните оттуда, пока не получите «действительные символы адресов электронной почты»! Но я сомневаюсь, что это эффективное решение! – Nullpointer
Что вы подразумеваете под «заключенным между двумя пробелами»? – ooga
Я честно считаю, что это хорошо. Я не уверен, насколько сложным может быть правильный адрес электронной почты, но если он ограничен только некоторыми наборами символов, это легко и эффективно. Я бы также рассмотрел библиотеку regexp, если требуется больше логики. – luk32