Member 13062810 Ответов: 3

Как решить строковый код


#include<conio.h>
#include<stdio.h>
int main()
{
char *str="India";
str[1]='D';
printf("%s",str);
return 0;
}


проблема объявления В приведенном выше коде
любые другие ошибки пожалуйста скажите мне

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

я попробовал включить строку.h но это дает ошибку времени выполнения

Graeme_Grant

В чем же ошибка?

3 Ответов

Рейтинг:
1

Patrice T

Цитата:
проблема объявления В приведенном выше коде

Это может быть что угодно, в зависимости от вашего компилятора и версии.
Дайте сообщения об ошибках и позиции.

Цитата:
любые другие ошибки пожалуйста скажите мне

Отладчик покажет вам, что делает ваш код.

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
0

CPallini

Так и должно быть:

#include <stdio.h>
int main()
{
  char str[] = "India";
  str[1]='D';
  printf("%s\n", str);
  return 0;
}


Ваша последовательность
Цитата:
char *str= " Индия";
str[1]='D';
это неправильно, потому что нет записываемой памяти, выделенной для str это просто указывает на только для чтения память (строковый литерал "India").


Рейтинг:
0

Jochen Arndt

str является указателем на строковый литерал - cppreference.com[^ Изменение содержания таких литералов приводит к неопределенному поведению.

Вместо этого используйте

char str[] = "India";
Это создаст массив и скопирует содержимое строкового литерала в этот массив.