- 论坛徽章:
- 0
|
1、先初始化
2、算出尾部\n的个数
3、strncpy尾部\n之前的字符串
4、再strncpy\n的个数
如需要的字符串长度为16
现有字符串char *a="abcd\n\n\n",那么假设存放在char str[17];
1、memset(str, ' ', 16);str[16] = '\0';
2、尾部\n的个数为3
3、strncpy(str, a, strlen(a) - 3);
4、strncpy(&str[sizeof(str) - 3], a + strlen(a) - 3, 3);
#define NEED_BYTES 16
int main(int argc, char **argv)
{
const char *a="abcd\n\n\n";
char str[NEED_BYTES + 1];
int count = 0;
const char *p = a + strlen(a) - 1;
memset(str, ' ', NEED_BYTES);
str[NEED_BYTES] = '\0';
while(p > a)
{
if(*p == '\n')
++count;
--p;
}
strncpy(str, a, strlen(a) - count);
strncpy(&str[sizeof(str) - count - 1], a + strlen(a) - count, count);
printf("---%s, strlen(str): %d\n", str, strlen(str));
return 0;
} |
|