#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <locale.h>
#include <stdint.h>
// separate words with only one space
char *handle_whitespace(char *content)
{
// to be removed later
int i, len = mbstowcs(NULL,content,0)+1;
wchar_t unicode_content[len];
wchar_t *normalized_content
= malloc(len
* sizeof(wchar_t *));
// convert char to wchar_t
mbstowcs(unicode_content, content, len);
short space_added = 0;
int k=0;
for(i=0; unicode_content[i] ; ++i){
if(!space_added) {
normalized_content[k] = L' ';
space_added = 1;
k++;
}
}else {
normalized_content[k] = unicode_content[i];
space_added = 0;
k++;
}
}
normalized_content[k+1] = L'\0';
// convert wchar_t back to char
char *newstr
= malloc(len
* sizeof(char *)); wcstombs(newstr,normalized_content,len * sizeof(char *));
free(normalized_content
);
return newstr;
}
int main(){
char *h = handle_whitespace("hello world");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8Y3R5cGUuaD4KI2luY2x1ZGUgPGxvY2FsZS5oPgojaW5jbHVkZSA8c3RkaW50Lmg+CgoKLy8gc2VwYXJhdGUgd29yZHMgd2l0aCBvbmx5IG9uZSBzcGFjZQpjaGFyICpoYW5kbGVfd2hpdGVzcGFjZShjaGFyICpjb250ZW50KQp7CiAgIC8vIHRvIGJlIHJlbW92ZWQgbGF0ZXIKICAgc2V0bG9jYWxlKExDX0FMTCwgImVuX1VTLnV0ZjgiKTsKICAgaW50IGksIGxlbiA9IG1ic3Rvd2NzKE5VTEwsY29udGVudCwwKSsxOwogICAKICAgd2NoYXJfdCB1bmljb2RlX2NvbnRlbnRbbGVuXTsKICAgd2NoYXJfdCAqbm9ybWFsaXplZF9jb250ZW50ID0gbWFsbG9jKGxlbiAqIHNpemVvZih3Y2hhcl90ICopKTsKICAgCiAgIC8vIGNvbnZlcnQgY2hhciB0byB3Y2hhcl90CiAgIG1ic3Rvd2NzKHVuaWNvZGVfY29udGVudCwgY29udGVudCwgbGVuKTsKICAgCiAgIHNob3J0IHNwYWNlX2FkZGVkID0gMDsKICAgaW50IGs9MDsgICAKICAgZm9yKGk9MDsgdW5pY29kZV9jb250ZW50W2ldIDsgKytpKXsKICAgICAgIGlmKGlzd3NwYWNlKHVuaWNvZGVfY29udGVudFtpXSkpewoJIGlmKCFzcGFjZV9hZGRlZCkgewoJICAgbm9ybWFsaXplZF9jb250ZW50W2tdID0gTCcgJzsKCSAgIHNwYWNlX2FkZGVkID0gMTsKCSAgIGsrKzsKCSB9CiAgICAgICB9ZWxzZSB7CSAKICAgICAgICAgbm9ybWFsaXplZF9jb250ZW50W2tdID0gdW5pY29kZV9jb250ZW50W2ldOwoJIHNwYWNlX2FkZGVkID0gMDsKCSBrKys7CiAgICAgICB9CiAgICAgICAKICAgfQogICBub3JtYWxpemVkX2NvbnRlbnRbaysxXSA9IEwnXDAnOwogICAKICAgLy8gY29udmVydCB3Y2hhcl90IGJhY2sgdG8gY2hhcgogICBjaGFyICpuZXdzdHIgPSBtYWxsb2MobGVuICogc2l6ZW9mKGNoYXIgKikpOwogICB3Y3N0b21icyhuZXdzdHIsbm9ybWFsaXplZF9jb250ZW50LGxlbiAqIHNpemVvZihjaGFyICopKTsKICAgCiAgIGZyZWUobm9ybWFsaXplZF9jb250ZW50KTsKICAKICAgcmV0dXJuIG5ld3N0cjsKfQoKaW50IG1haW4oKXsKY2hhciAqaCA9IGhhbmRsZV93aGl0ZXNwYWNlKCJoZWxsbyAgICB3b3JsZCIpOwogIAogIHByaW50ZigiJXNcbiIsIGgpOwpyZXR1cm4gMDsJCn0=