Redmanc Ответов: 2

C++ сомнение : я перевернул массив символов. Но я получаю некоторые ненужные значения.


Привет..
Я перевернул массив символов. Но я получаю некоторые ненужные значения.
Извините, если это кажется глупым сомнением ... я только начинаю с++...
PFB код, который я написал, чтобы обратить вспять массив символов.

#include<iostream>
#include<stdio.h>
#include<conio.h>
#include<string.h>

using namespace std;

int main()
{
   
    char a[10],b[10];
    int i,j,k,z;
    cout<<"enter a=";
    gets(a);
    cout<<"the array is-"<<a<<endl;
    i = strlen(a);
    k=i-1;
    for(j=0;j<i;j++)
    {

        b[j]=a[k];
        k--;
    }
    b[j]='/0';
    cout<<"reversed-"<<b<<endl
    return 0;
}


Полученный результат выглядит следующим образом:
массив таков-manc
обратный-cnam0'?&9manc
Как вы могли видеть, массив перевернут, так как cnam был перевернутыми символами, но за ним следуют ненужные значения.
В чем причина этих мусорных ценностей? Как их избежать?

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

Я смог отобразить то,что мне было нужно, просто используя цикл for. Но я хотел знать, почему отображаются ненужные значения и каково их значение.

PIEBALDconsult

'/0 ' должно быть '\0'

0x01AA

5 даже это не считается

Afzaal Ahmad Zeeshan

Они действительно считаются... Поистине. :-)

Redmanc

да...это была ошибка...спасибо!!

2 Ответов

Рейтинг:
20

OriginalGriff

Я вижу две проблемы: обе они должны препятствовать компиляции кода.
1) null-это обратный Слэш ноль, а не Слэш ноль:

b[j]='/0';
должно быть:
b[j]='\0';

2) в этой строке отсутствует точка с запятой:
cout<<"reversed-"<<b<<endl
Должно быть:
cout<<"reversed-"<<b<<endl;

Поскольку этот код не компилируется - или не должен компилироваться ни в одном разумном компиляторе - результаты, которые вы получаете от запуска вашего кода, не имеют значения, поскольку это не тот код, на который вы смотрите!
Исправьте эти два, и он должен скомпилироваться и работать правильно.


Redmanc

Большое спасибо!!

OriginalGriff

Пожалуйста!

Рейтинг:
2

Patrice T

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

С помощью отладчика вы бы обнаружили, что

b[j]='/0';

делал не то, что вы ожидали.

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

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.