@im_noob

Почему в выводе такие значки?

Задание:
Вставить заданный символ в заданную строку через каждые 2 символа.
Вот такой странный вывод я получаю:
Input =
fghjds
Input =
2
fghjds
fg♠hj♠ds♠

#define _CRT_SECURE_NO_WARNINGS

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

char* InputSymbol(char* Stri, char s)
{
    int n = strlen(Stri);
    char symbol='\0';
    char* r = (char*)calloc(2 * n, 1);
    int i, j = 0, k = 0;
    for (i = 0; i < n; i++)
    {
        r[j++] = Stri[i];
 
        k++;
        if (k == 2)
        {
            r[j++] = symbol; //указанный символ 
            k = 0;
        }

    }
  

    return r;
}

int main(int argc, char* argv[]) {
   char ss;
     char* S = &ss;
   printf("Input = \n");
    scanf("%s", &ss);
    char symbl=0;
    char* Symb = &symbl;
    printf("Input = \n");
    scanf("%s", &symbl);
    char* R;
    R = InputSymbol(S,Symb);
    printf("%s\n", R);
    free(R);
    system("pause");
    return 0;
}
  • Вопрос задан
  • 338 просмотров
Решения вопроса 1
includedlibrary
@includedlibrary
Изменить тип символа в функции InputSymbol с char* на char.

Сделать нормальное считывание, потому что считывание символа сейчас реализовано плохо.
"%s" означает считать массив непробельных символов. Если я введу два символа вместо одного, то перезапишется не только значение переменной symbl.
char symbl=0;
    char* Symb = &symbl;
    printf("Input = \n");
    scanf("%s", Symb);


Сделать нормальное считывание строки. В scanf нужно передавать буфер, а не указатель на переменную char.
char ss = 0;
   char* S = &ss;
   scanf("%s", S);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@im_noob Автор вопроса
Нашел ошибку.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы