C Программирование. Как сделать метод для печати строки - PullRequest
1 голос
/ 12 сентября 2009

Я пытаюсь создать функцию в C, которая будет печатать строку, взятую в качестве параметра. Возможно ли это даже в C?

У меня есть что-то подобное в моем заголовочном файле, но строка не является допустимым идентификатором. Я понимаю, что в C нет строк, но для чего нужен класс string.h?

#include <string.h>    

#ifndef _NEWMAIN_H
#define _NEWMAIN_H

#ifdef __cplusplus
extern "C" {
#endif

    void print (string message){  //this is where i need help
        printf("%s", message);
    }


#ifdef __cplusplus
}
#endif

#endif /* _NEWMAIN_H */

Ответы [ 4 ]

5 голосов
/ 12 сентября 2009

В C нет собственного типа string.

C обрабатывает строки как массив char с нулевым символом в конце.

Например:

char* string = "this is a string";

string.h существует для выполнения функций манипуляции со строками над строками C типа char*.

При печати строки, используя printf, можно передать переменную char*:

char* string_to_print = "Hello";
printf("%s", string_to_print);

Для получения дополнительной информации о строках в C, страница Wikipedia по строкам C будет хорошим началом.

3 голосов
/ 12 сентября 2009
void print (const char* message) {
            printf("%s", message);
}
1 голос
/ 12 сентября 2009

Подумав немного об этом, для домашнего задания, которое должно заменить printf, вы захотите использовать char *, как указано другими, и использовать fwrite для stdout.

С похожим вопросом вы можете ознакомиться на C / C ++ лучший способ отправить количество байтов на стандартный вывод

0 голосов
/ 12 сентября 2009

В Си нет строк, так как в Си нет классов. string.h предоставляет процедуры для обработки текстового манипулирования строкой в ​​Си с использованием указателей на символ.

Вы захотите переписать это как:

void print(const char* message) {
    printf(message); // You don't need the formatting, since you're only passing through the string
}

Это, как говорится, на самом деле ничем не отличается от простого вызова printf напрямую.

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