在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
答案 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 );
如果不是这种情况,您可以将字符串作为数组循环并查找您的点。
之后您可以使用此索引计算正确的偏移量。但要小心这个解决方案。如果一个字符串不讨厌dt和最后一个空闲字符,则可能导致访问冲突。
答案 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();
}