Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2012, 21:22   #1
Oleg3
 
Регистрация: 02.08.2012
Сообщений: 9
По умолчанию ошибка СИ

помогите исправить ошибку
Код:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
 
#define MAX 11
#define LEN 80
 
char *chr2str(char *word)
{
  char result[(strlen(word)*4+3)];
  char *ptr;
  int i = 0;
  char charF, charS, temp;
 
  ptr = word;
  i = 0;
  while(*ptr) {
    if(isalpha(*ptr)) {
      temp = toupper(*ptr)-64;
      charF = temp / 10 + 48;
      charS = temp % 10 + 48;
      result[i] = '[';
      result[++i] = charF;
      result[++i] = charS;
      result[++i] = ']';
    }
    else {
      result[i]   = *ptr;
    }
    i++;
    ptr++;
  }
  result[i] = '\0';
  char *rptr = malloc(strlen(result) + 1);
  if(!rptr) { puts("Error: lack of memory");
              exit(1);                     }
  strcpy(rptr, result);
 
  return rptr;
}
      
void swap(char *text, char *word, int flag)
{
  char *ptr, *ptr2;
  ptr = strtok(text, " ");
  if (ptr) {
    if (!strcmp(ptr, word)) {
      ptr2 = chr2str(word);
      if (flag)
        printf("%c", ' ');
      printf("%s", ptr2);
      free(ptr2);
    }
    else {
      if(flag)
        printf("%c", ' ');
      printf("%s", ptr);
    }
    swap(NULL, word, 1);
  }
}
 
int main(void)
{
  char text[MAX][LEN];
  char word[LEN];
  register int t, i;
  char *ptr;
 
  puts("Enter text <exit void str>.");
  for (t=0; t<MAX; t++) {
    printf("%d: ", t);
    i = 0;
    while(i<LEN) {
      text[t][i] = getchar();
      if (text[t][i]=='\n') {
        text[t][i] = '\0';
      }
      if (text[t][i]=='\0')
        break;
      i++;
    }
    if(!*text[t]) break;
  }
 
  printf("\nEnter word: ");
  scanf("%s", word);
  puts("");
 
  for (i=0; i<t; i++) {
    if (strstr(text[i], word) != NULL) {
      swap(text[i], word, 0);
      puts("");
    }
    else {
      if (ptr = strtok(text[i], " ")) printf("%s", ptr);
      if (ptr = strtok(NULL, " ")) {
        printf(" %s", ptr);
    printf(" <%s>", word);
      }
      while (ptr = strtok(NULL, " ")) printf(" %s", ptr);
      puts("");
    }
  }
    
 
  return 0;
}
error C2057: требуется константное выражение
error C2466: невозможно выделить память для массива постоянного нулевого размера
error C2133: result: неизвестный размер
в 11й строке
компилятор visual c++
Oleg3 вне форума Ответить с цитированием
Старый 09.08.2012, 21:32   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
char result[(strlen(word)*4+3)];
Придется заменить на
Код:
char *result = (char*)malloc(strlen(word)*4+3);
Цитата:
char *rptr = malloc(strlen(result) + 1);
на
Код:
char *rptr = (char*)malloc(strlen(result) + 1);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.08.2012, 21:48   #3
Oleg3
 
Регистрация: 02.08.2012
Сообщений: 9
По умолчанию

спс большое все работает
Oleg3 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Nero - ошибка драйвера DMA. ошибка CRC NecRoMat Софт 5 09.05.2012 01:29
Где ошибка в этом исходном коде на языке Си? Или ошибка в Excel? ArchiCurtis Помощь студентам 2 07.04.2012 14:16
Ошибка run-time Error 1004 общая ошибка ODBC kaval88 Microsoft Office Excel 0 27.02.2011 20:20
Ошибка в коде, ошибка в css или это проблема с совместимостью с браузерами? ankris HTML и CSS 5 23.11.2010 16:58
...Ошибка 101 (net::ERR_CONNECTION_RESET): Неизвестная ошибка... infrared Помощь студентам 0 16.04.2009 17:44