Где ошибка в программе распознавания мейла? - C (СИ)
Формулировка задачи:
недавно начал изучать C, решил написать программу которая возвращает единицу, если строка имеет вид removed@mail.ru и 0 в противном случае, но проблема возникла на самом начальном этапе написания. Проблема в том, что когда я в функции MailDetect заполняю массив указателей указателями на символы '@' и '.' из вводимой строки, массив указателей заполняется неправильно, то есть выводя на печать значение array1 или адрес, там оказывается адрес какого-то непонятного случайного символа, а не адрес "собаки". то же самое с array2. помогите плиз найти ошибку.
#include "stdafx.h" #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int MailDetect (char *str); int main(void) { char *str, string[80]; printf("Input e-mail adress, please: \n"); gets (string); MailDetect(string); getch(); return 0; } int MailDetect (char *s) { char c, d, i, j; char *arrayc, *arrayd, *array1[80], *array2[80]; int ccount=0, dcount=0; c='@'; d='.'; while (*s) { if (*s == c) { ccount++; //считаем сколько раз @ и входят в строку array1[ccount]=s; // заполняем адресами собак массив array1 } if(*s==d) { dcount++; //аналогично для точек array2[ccount]=s; } s++; } /* arrayc = (char*) malloc(ccount*sizeof(char)); //присваеваем элементам массива arrayc адреса "собак" arrayd = (char*) malloc(dcount*sizeof(char)); if (!arrayc || !arrayd) { printf("\nOut of memory\n"); exit(1); } for (i=0; i<ccount; i++) { while (*s) { if (*s == c) { *(arrayc+i)=*s; } s++; } } free (arrayc); for (j=0; j<ccount; j++) { printf("%c\n", *(arrayc+1)); } for (i=0; i<ccount; i++) { while (*s) { if (*s == c) { array1[i]=*s; } s++; } } */ for (i=0; i<ccount; i++) { printf("%c\n", *(array1+i)); } return 0; }
Решение задачи: «Где ошибка в программе распознавания мейла?»
textual
Листинг программы
char *arrayc, *arrayd, array1[80], array2[80];
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д