Ошибка в своей версии strcat - C (СИ)

Узнай цену своей работы

Формулировка задачи:

не могу понять в чем ошибка, помогите разобраться в коде
#include <stdio.h>
 
void strcat(char *line,char *line2);
 
int main(void)
{
  char *line="hello,";
  char *line2=" world";
  strcat(line,line2);
  printf("%s",*line);
  return 1;
}
 
void strcat(char *s,char *t)
{
  while ((*s++)!='\0')
    ;
  while ((*s++=*t++)!='\0')
    ;
}

Решение задачи: «Ошибка в своей версии strcat»

textual
Листинг программы
char*  __fastcall strcat_(char* _dst, const  char* _src) {
    __asm {
    mov edi, _dst
n:
    mov    al, byte ptr [esi]
    cmp    al, '\0'
    je  e;
    inc esi
    jmp n;
e:
    mov  esi, _src
n_:
    mov al, byte ptr [esi]
    mov byte ptr[edi], al
    or al, '\0'
    jz  e_;
    inc esi
    inc edi
    jmp n_;
e_:
    };
    return _dst;
}
 
 
 
 
 void  main(void){
    char str[255];
    strcpy(str, "Assembler-embed to C/C++");
 
    strcat_(str, ", SUPER  Saymon De, escander, escape, seven my number.");
    cout << "elapsed: " << str << endl;
}

Объяснение кода листинга программы

  1. В функции strcat_ мы имеем два указателя: _dst и _src.
  2. _dst указывает на строку, к которой мы хотим добавить символ, а _src указывает на строку, из которой мы хотим взять символ.
  3. Процесс начинается с первого байта строки _src и продолжается до тех пор, пока не встретится нулевой символ.
  4. Каждый символ из _src копируется в _dst с помощью операции mov.
  5. Если текущий символ из _src является нулевым, то процесс завершается.
  6. В конце функции возвращается указатель на исходную строку _dst.
  7. В функции main мы объявляем строку str типа char с максимальной длиной 255 символов.
  8. С помощью функции strcpy мы копируем строку Assembler-embed to C/C++ в нашу строку str.
  9. С помощью функции strcat_ мы добавляем строку , SUPER  Saymon De, escander, escape, seven my number. к нашей строке str.
  10. С помощью функции cout мы выводим итоговую строку на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5