30 lines
626 B
C
30 lines
626 B
C
#ifndef CARET_NOTATER
|
|
#define CARET_NOTATER
|
|
|
|
static inline
|
|
int is_caret(char c) {
|
|
return (0 <= c && c <= 31);
|
|
}
|
|
|
|
static inline
|
|
char to_caret_char(char c) {
|
|
return c + '@';
|
|
}
|
|
|
|
char * string_to_caret_notation(const char * input, int size, char * output) {
|
|
int output_empty_end = 0;
|
|
for (int i = 0; i < size; i++) {
|
|
if (is_caret(input[i])) {
|
|
output[output_empty_end++] = '^';
|
|
output[output_empty_end++] = to_caret_char(input[i]);
|
|
} else {
|
|
output[output_empty_end++] = input[i];
|
|
}
|
|
}
|
|
output[output_empty_end] = '\0';
|
|
|
|
return output;
|
|
}
|
|
|
|
#endif
|