MareGraphics Ответов: 2

Как мне объединить 2 строки?


Здравствуйте, я пытаюсь соединить 2 строки вместе, но использую только For ().
Я понятия не имею, как это сделать.. Он печатает только строку a или b..

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

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char a[100],b[100],c[200];
    int i,n,m,j,k,z,br=0;

    puts("Enter first string:");
    gets(a);
    n = strlen(a);

    puts("Enter second string:");
    gets(b);
    m = strlen(b);
    k = n+m;
    printf("Conected string:\n");
        for(i=z=0;i<n;i++)
        {
            c[i] = a[z];
            z++;
            br = br +1;
        }

        for(z=n;z<=k;z++)
            for(j=0;j<m;j++)
            c[z] = b[j];

            c[i] = c[z];

        c[i] = '\0';
        puts(c);
}

2 Ответов

Рейтинг:
6

phil.o

for(i=z=0;i<n;i++)
{
   c[z] = a[i];
   z++;
}
for(i=z=0;i<m;i++)
{
   c[z] = b[i];
   z++;
}

Во втором цикле, если вы сбросите z до нуля, то вы перепишете уже записанные значения вашей переменной c со значением в b. Уберите подчеркнутую часть, и у вашего алгоритма будет больше шансов действовать правильно.
Если бы вы использовали отладчик, как вам предложил ppolymorphe, то вы бы очень быстро заметили это самостоятельно :)


MareGraphics

Работает, спасибо.

Ну, я все еще немного новичок в программировании.. В моей средней школе мы только что получили предмет программирования. И я не понимаю, как использовать отладчик.

Я буду гуглить его

phil.o

Добро пожаловать.
Вы также можете использовать предоставленные ссылки в решении 1, чтобы лучше узнать об отладке :)

Рейтинг:
12

Patrice T

Вы в основном справляетесь с 2 строками, есть ли у вас причина не использовать один и тот же алгоритм для обоих?
-----
Будьте осторожны, чтобы правильно отступить ваш код, он показывает свою структуру, и это помогает читать и понимать. Смотрите разницу в конце кода.

#include <stdio.h>
#include <stdlib.h>

int main()
{
  char a[100],b[100],c[200];
  int i,n,m,j,k,z,br=0;

  puts("Enter first string:");
  gets(a);
  n = strlen(a);

  puts("Enter second string:");
  gets(b);
  m = strlen(b);
  k = n+m;
  
  printf("Conected string:\n");
  for(i=z=0;i<n;i++)
  {
    c[i] = a[z];
    z++;
    br = br +1;
  }

  for(z=n;z<=k;z++)
    for(j=0;j<m;j++)
      c[z] = b[j];

  c[i] = c[z];

  c[i] = '\0';
  puts(c);
}

Профессиональные редакторы программистов имеют эту функцию и другие, такие как сопоставление скобок и подсветка синтаксиса.
Блокнот++ Главная Страница[^]
личные[^]
-----
Используйте отладчик и посмотрите, как работает ваш код, это очень хороший способ узнать, что работает, а что нет.

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

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

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


MareGraphics

Здравствуйте, сэр, я использую Code::Blocks для написания кода, и я не понимаю, как работает отладчик :/

Patrice T

интерфейс IDE предлагать некоторые особенности отладки с помощью GDB ГНУ, давайте поймем, что есть какие-то документы и даже купола учебники.