C - 复制未知长度字符串中的最后一个字符

时间:2016-05-03 13:49:35

标签: c string

在C编程中,假设我有一些长度未知的输入字符串,如:

abcde.xxx abc.xxx abcdefgh.xxx ....

如何从中获取最后4个字符?我试过这种方式,但它不起作用:

char dest[] = "abcdef.ghi";
char s[5];
memset(s, '\n', sizeof s);
strncpy(s, dest - 5, 4);

但我无法使用strstr(),因为dest可能与格式xxxx.xxx错误,如abcd.xxxy

3 个答案:

答案 0 :(得分:3)

cat install_manifest.txt | xargs echo sudo rm | sh

答案 1 :(得分:1)

当字符串以null结尾时,您可以使用strlen来获取字符串的长度:

char s[5];
size_t len, offset;
char dest[] = "abcdef.ghi";

len = strlen(dest);
memset( s, '\0', sizeof(char)*5);
offset = len-4;
strncpy( s, &dest[offset], 4 );

如果不是这种情况,您可以将字符串作为数组循环并查找您的点。

之后您可以使用此索引计算正确的偏移量。但要小心这个解决方案。如果一个字符串不讨厌d​​t和最后一个空闲字符,则可能导致访问冲突。

答案 2 :(得分:-1)

#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
    char dest[] = "abcdef.ghi";
    char *p=dest;
    int len=strlen(dest);
    clrscr();
    printf("%s is of length %d\n",dest,len);
    p=p+(len-4);
    for(;*p;printf("%c",*p),p++);
    getch();
}