Jatin Tayal Ответов: 2

Когда я пытаюсь запустить свой код, он показывает, что компилятор перестал работать, Может ли кто-нибудь сказать мне, почему


#include<stdio.h>
#include<stdio.h>
int main()
{
    char *s[] = {
                    "To err is human...",
                    "But to really mess things up",
                    "One needs to know C!!"
                }, rev[3][30];
    int a;
    for(a = 0; a <3; a++)
    {
        rev[a][0] = strrev(*s[a]);
        printf("%s", rev[a][0]);
    }
    return 0;
}


Что я уже пробовал:

Пытался скомпилировать его несколько раз с несколькими модификациями, но ничего не происходит

Suvendu Shekhar Giri

есть успехи с отладкой?

Jatin Tayal

нет, мне кажется, я что-то очень сильно испортил в коде. Компилятор работает нормально, проблема в его синтаксисе.

2 Ответов

Рейтинг:
2

KarstenK

strrev переворачивает строку на месте, таким образом, вход перевернут. Так что это должно сработать:

int main()
{
    char *s[] = { "To err is human...",
                    "But to really mess things up",
                    "One needs to know C!!"
                };
    int a;
    for(a = 0; a <3; a++)
    {
        printf(/*"%s",*/ strrev(s[a]);
    }
    return 0;
}


Jatin Tayal

Эй, Карстенк, это не работает, все то же самое issue...by то, как вы забыли закрывающую скобку в заявлении о печати...

Рейтинг:
1

CPallini

Цитата:
char *s[] = {
"Человеку свойственно ошибаться...",
"Но чтобы действительно все испортить",
- Нужно знать с!!"
}
Вы пытаетесь изменить память только для чтения.
Попробуй:
int main()
{
    char s[][30] = {
                    "To err is human...",
                    "But to really mess things up",
                    "One needs to know C!!"
                };
    int a;
    for(a = 0; a <3; a++)
    {
        printf("%s\n", strrev(s[a]));
    }
    return 0;
}



КСТАТИ strrev это не стандартная функция, фактически недоступная в моей системе. Я набросал его с помощью
char * strrev(char * s)
{
  size_t len = strlen(s);
  size_t n;
  for (n=0; n<len/2; ++n)
  {
    char tmp = s[n];
    s[n] = s[len-1-n];
    s[len-1-n] = tmp;
  }  
  return s;
}