Извращения с копированием строк
На днях изучал работу с динамической памятью в стандартном си и не смог удержаться от изврата:
Код:
#include <stdio.h>
#include <stdlib.h>
char* str = "Hello\n\n"
"This is dynamically memory test programm\n"
"I create some string and place it\n"
"into fucking static memory. Then I have\n"
"copyed it into dynamically area and print.\n\n"
"Let's do it!\n\n";
int main()
{
int j;
char* buf = (char*)calloc(256, 1);
for(j = 0; str[j] && buf; buf[j] = str[j++]);
system("cls");
printf("%s", buf);
system("pause");
free(buf);
return 0;
}
#include <stdlib.h>
char* str = "Hello\n\n"
"This is dynamically memory test programm\n"
"I create some string and place it\n"
"into fucking static memory. Then I have\n"
"copyed it into dynamically area and print.\n\n"
"Let's do it!\n\n";
int main()
{
int j;
char* buf = (char*)calloc(256, 1);
for(j = 0; str[j] && buf; buf[j] = str[j++]);
system("cls");
printf("%s", buf);
system("pause");
free(buf);
return 0;
}
Как еще больше можно извратить?
Код:
for(j = 0; str[j] && buf; buf[j] = str[j++], buf[j] = 0x00);
Цитата: Bard
Я бы добавил в конец buf[j] = 0x00:
т.к. после копирования за строкой в буфере может оказаться не нулевой символ..
Код:
for(j = 0; str[j] && buf; buf[j] = str[j++], buf[j] = 0x00);
Не соглашусь, ибо calloc(), а не malloc() :)