#include "stdafx.h"
#include <string.h>
#include <ctype.h>
char* trim(char* input);
int _tmain(int argc, _TCHAR* argv[])
{
char sz1[]=" MQRFH ";
char sz2[]=" MQRFH";
char sz3[]=" MQR FH";
char sz4[]="MQRFH ";
char sz5[]="MQRFH";
char sz6[]="M";
char sz7[]="M ";
char sz8[]=" M";
char sz9[]="";
char sz10[]=" ";
printf("sz1:[%s] %d\n",trim(sz1), strlen(sz1));
printf("sz2:[%s] %d\n",trim(sz2), strlen(sz2));
printf("sz3:[%s] %d\n",trim(sz3), strlen(sz3));
printf("sz4:[%s] %d\n",trim(sz4), strlen(sz4));
printf("sz5:[%s] %d\n",trim(sz5), strlen(sz5));
printf("sz6:[%s] %d\n",trim(sz6), strlen(sz6));
printf("sz7:[%s] %d\n",trim(sz7), strlen(sz7));
printf("sz8:[%s] %d\n",trim(sz8), strlen(sz8));
printf("sz9:[%s] %d\n",trim(sz9), strlen(sz9));
printf("sz10:[%s] %d\n",trim(sz10), strlen(sz10));
return 0;
}
char *ltrim(char *s)
{
while(isspace(*s)) s++;
return s;
}
char *rtrim(char *s)
{
char* back;
int len = strlen(s);
if(len == 0)
return(s);
back = s + len;
while(isspace(*--back));
*(back+1) = '\0';
return s;
}
char *trim(char *s)
{
return rtrim(ltrim(s));
}
Output:
sz1:[MQRFH] 9
sz2:[MQRFH] 6
sz3:[MQR FH] 8
sz4:[MQRFH] 7
sz5:[MQRFH] 5
sz6:[M] 1
sz7:[M] 2
sz8:[M] 2
sz9:[] 0
sz10:[] 8
Cảm ơn vì điều đó. Tôi tìm thấy nó chậm phát triển rằng không có chức năng thư viện (nếu tất cả mọi người cuộn riêng của họ sau đó họ đang tất cả sẽ mishandle unicode, vv theo nhiều cách khác nhau), nhưng tôi đoán nó là những gì nó là ... –
Xử lý chuỗi C là khó xử, nhiều hơn thế với Unicode. C++ vá nó với chuỗi std :: nhưng việc tạo chuỗi tự nhiên yêu cầu thiết kế lại. C, mặc dù tất cả các nhân đức của nó, là xa là một ngôn ngữ hoàn hảo. –
Heh. C được phát minh năm '72. Unicode đã không đi kèm cho đến những năm 90. Đối với hầu hết lịch sử của C không có gì ngoài ASCII, và str [x] = '\ 0'; sẽ làm tốt công việc. –