Где ошибка в программе распознавания мейла? - 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];

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы