Ответы пользователя по тегу C
  • Как заменить символ "*"на точку?

    @cython
    У вас идёт проверка на то, что символ является числом, и только в этом случае он будет заменён на точку.
    #include <stdio.h>
    #include <string.h>
    #include <ctype.h>
    
    
    int main(int argc, char const* argv[]) {
    	char str[] = "soroto*11414*parapa*alfjjf*";
    	char* ptr = strchr(str, '*');
    	if (ptr) {
    		while (--ptr >= str) {
    			if (!isdigit(*ptr)) {
    				*ptr = '.';
    			}
    		}
    	}
    	puts(str);
    	return 0;
    }
    Ответ написан
  • Как сделать "trait Rust" на Си?

    @cython
    Это можно реализовать преобразованием указателя на существующую структуру в структуру-трейт, который описывает нужные свойства. Но при таком подходе, при несоответствии трейту, будет Segmentation Fault
    #include <stdio.h>
    
    void say_colour(char *s);
    void say_colour(char *s){  printf("машина цветом %s",s);}
    
    typedef struct { // Трейт
    	char z[10];
    	void(*say_colour)(char* s);
    } Colour;
    
    typedef struct {
        char z[10];
        void(*say_colour)(char *s);
        int a; // Доп свойство
    } Blue;
    
    typedef struct{
        Colour* colour;
    } Car;
    
    int main(int argc, char const *argv[]){
        Blue b = {.z ="blue",.say_colour=say_colour};
        Car car = {
        	.colour = (Colour*)&b // Преобразуем Blue в Colour
        };
        car.colour->say_colour("dsfd");
        
        return 0;
    }
    Ответ написан
    1 комментарий
  • Когда использовать malloc() или calloc()?

    @cython
    calloc используют для выделения памяти под массивы, он принимает 2 аргумента, кол-во элементов массива и размер одного элемента в байтах. malloc принимает 1 аргумент, это размер выделяемой памяти в байтах. По сути одно и тоже, но calloc заполняет выделенную память нулями, что убирает весь оставшийся мусор в выделенной памяти.
    Ответ написан
    Комментировать
  • Как показать адрес в памяти?

    @cython
    Можете использовать любую другую функцию вывода в консоль(conio, api системы). Но это тоже самое будет.
    Ответ написан
    Комментировать
  • Как исправить ошибку с mingw msys и winsock2?

    @cython Автор вопроса
    Нашёл ответ. Нужно
    #define WIN32_LEAN_AND_MEAN
    перед подключением всех библиотек
    Ответ написан
    Комментировать