Возвратить строку из функции - C (СИ)
Формулировка задачи:
Привет Всем! Пытаюсь разобраться с тем как можно возвратить строку из функции собственно вот мой код
собственно компилируется без ошибок, но когда запускаю, ошибка выскакивает (Программа завершена и искать решение проблемы в интеренете)
А я хочу чтобы в number была строка temp;
помогите кто может оч хочется разобраться никак не получается...
Всем спасибо заранеее
#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;
}Решение задачи: «Возвратить строку из функции»
textual
Листинг программы
*temp = str[j]; temp++;
Объяснение кода листинга программы
В данном коде выполняется следующие действия:
- Переменная
tempинициализируется значениемstr[j]. - Значение переменной
tempувеличивается на единицу.