35 lines
770 B
C
35 lines
770 B
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
char* expand_tabs(const char* string);
|
|
|
|
int main(void)
|
|
{
|
|
const char* str = "This is a text This is another one. ' ' <- space; ' ' <-tab";
|
|
printf("%s - %d\n", str, (int)strlen(str));
|
|
printf("%s - %d\n", expand_tabs(str),(int) strlen(expand_tabs(str)));
|
|
|
|
}
|
|
|
|
char* expand_tabs(const char* string){
|
|
int tab_count = 0, letter_count = 0;
|
|
for(int i = 0; string[i] != '\0'; i++){
|
|
letter_count++;
|
|
if(string[i] == '\t')
|
|
tab_count++;
|
|
}
|
|
char* ret = malloc(sizeof(char) * letter_count + 3*tab_count);
|
|
char* filler = ret;
|
|
for(int i = 0; string[i] != '\0'; i++){
|
|
if(string[i] == '\t'){
|
|
for (int j = 0; j < 4; ++j) {
|
|
*(filler++) = ' ';
|
|
}
|
|
}else{
|
|
*(filler++) = string[i];
|
|
}
|
|
}
|
|
return ret;
|
|
}
|