Почему переменная I не увеличивается в цикле? - PullRequest
0 голосов
/ 01 марта 2019

В чем здесь проблема?Я пытался объединить две строки.

Вот полный код.Только первая строка печатается.

#include<stdio.h>
main()
{
    char s[100],s2[100];
    printf("Enter a String\n");
    scanf("%s",&s);
    printf("Enter second String\n");
    scanf("%s",&s2);
    int i=strlen(s);
    //printf("%d",i);
    int j;


    for(j=0;s2[j]!='\0';++j)
    {
        i+=1;
        s[i]=s2[j];
    }

    printf("%s",s);
}

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Если вы хотите написать это более безопасно и не переполнять переменную s, используйте это:

size_t size = strlen(s) + strlen(s2);
char* result = (char*) malloc(sizeof(char) * size + 1);
sprintf(result, "%s%s", size);

Это просто и безопасно.И сделать это в автоматическом режиме бесплатно s и s2.

0 голосов
/ 01 марта 2019

Как уже отмечалось, вы перепрыгиваете через терминатор s, меняете на

for(j=0;s2[j]!='\0';++j)
{
    s[i]=s2[j];
    i+=1;
}
s1[i]='\0'; // terminated after concatenation

и вы должны быть там.Помните, что если вы не проверяете длину полученной строки, вы можете переполнить массив s [100].

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