Возвратить строку из функции - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Привет Всем! Пытаюсь разобраться с тем как можно возвратить строку из функции собственно вот мой код
#include <stdio.h>
 
char *match(char *s);
 
int main()
{
    /* this file with phone number*/
    FILE *in;
    FILE *out;
    char str[50], *number;
    char *estr;
 
        /* if me need to input name file from console */ 
    /* if(argc!=3) {
    printf("Вы забыли ввести имя файла.\n");
    exit(1);
  }
 
  if((in=fopen(argv[1], "r+b"))==NULL) {
    printf("Нельзя открыть исходный файл.\n");
    exit(1);
  }
  if((out=fopen(argv[2], "w")) == NULL) {
    printf("Нельзя открыть файл результатов.\n");
    exit(1);
  } */
    if ((in = fopen("phoneIn.txt","r+b"))==NULL)
    {
        printf("mistake open file with phone number.\n");
        exit(1);
    }
    
    /* this file for output */
    if ((out = fopen("phoneOut.txt","w"))==NULL)
    {
        printf("mistake create file with validated phone number.\n");
        exit(1);
    };
     while (1)
   {
      // Чтение одной строки  из файла
      estr = fgets (str,sizeof(str),in);
 
      //Проверка на конец файла или ошибку чтения
      if (estr == NULL)
      {
         // Проверяем, что именно произошло: кончился файл
         // или это ошибка чтения
         if ( feof (in) != 0)
         {  
            //Если файл закончился, выводим сообщение о завершении 
            //чтения и выходим из бесконечного цикла
            printf ("End of read file\n");
            break;
         }
         else
         {
            //Если при чтении произошла ошибка, выводим сообщение 
            //об ошибке и выходим из бесконечного цикла
            printf ("Mistake of reading fom file\n");
            break;
         }
      }
      printf("%s\n",str);
      //Если файл не закончился, и не было ошибки чтения 
      //выводим считанную строку  на экран
      number = match(str);
   }
    fclose(in);
    fclose(out);
    return 0;
}
 
char *match(char *str)
{
    char ArrForConformity[] = {'0','1','2','3','4','5','6','7','8','9'};
    int i, j;
    char temp[10];
    for (j = 0; j <= sizeof (str) / sizeof (str[0]) - 1; j++)
    {
        for( i = 0; i <= sizeof (ArrForConformity) / sizeof (ArrForConformity[0]) - 1; i++ )
        {
            printf(str[j]);
            exit();
            if(str[j] == ArrForConformity[i])
            {
                strcat(temp, str[j]);
                break;
            }
        }
    }
    return temp;
}
собственно компилируется без ошибок, но когда запускаю, ошибка выскакивает (Программа завершена и искать решение проблемы в интеренете) А я хочу чтобы в number была строка temp; помогите кто может оч хочется разобраться никак не получается... Всем спасибо заранеее

Решение задачи: «Возвратить строку из функции»

textual
Листинг программы
*temp = str[j];
temp++;

Объяснение кода листинга программы

В данном коде выполняется следующие действия:

  1. Переменная temp инициализируется значением str[j].
  2. Значение переменной temp увеличивается на единицу.

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


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

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

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