一串字符,“abcdefghi” 我想取后面4个字符作为新的字符串,如何做?
在C语言中
60 个解决方案
#1
main()
{
int num;
char a[]=abcdefghi;
num=sizeof(a);
char b[4]=a[num-4];
prtitf("s%\n",b);
}
{
int num;
char a[]=abcdefghi;
num=sizeof(a);
char b[4]=a[num-4];
prtitf("s%\n",b);
}
#2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i;
char a[20], b[5];
scanf("%s",a);
for ( i = 0; i <=4; i++ )
b[i] = a[strlen(a)-(4-i)]; //包括'\0'
printf("%s\n%s\n",a,b);
system("PAUSE");
return 0;
}
#3
用strcpy
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i;
char a[20], b[5];
scanf("%s",a);
strcpy(b, (a+strlen(a)-4));
printf("%s\n",b);
system("PAUSE");
return 0;
}
#4
strncpy函数也可以,
#5
#include <string.h>
#include<stdio.h>
int main()
{
char s[]="123456789";
char p[4];
strncpy(p,s+5,strlen(s)-5);
printf("%0.4s\n",p);
getchar();
return 0;
}
#include<stdio.h>
int main()
{
char s[]="123456789";
char p[4];
strncpy(p,s+5,strlen(s)-5);
printf("%0.4s\n",p);
getchar();
return 0;
}
#6
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[]= "To be or not to be";
char str2[6];//取最后五个
strncpy (str2,str1+strlen(str1)-5, 5);
str2[5]='\0';
puts (str2);
return 0;
}
#7
我觉得1楼的代码是有问题的。
2楼和3楼的代码写得真好!
2楼和3楼的代码写得真好!
#8
#include <stdio.h>
int main(void)
{char a[]="abcdefghi",b[5];
int i, k=0, num=strlen(a);
for(i=num-4;i<=num;i++)
b[k++]=a[i];
printf("%s\n",b);
getchar();
return 0;
}
int main(void)
{char a[]="abcdefghi",b[5];
int i, k=0, num=strlen(a);
for(i=num-4;i<=num;i++)
b[k++]=a[i];
printf("%s\n",b);
getchar();
return 0;
}
#9
再来个不要string.h的
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i = 0, j = -1;
char a[20], b[5];
scanf("%s",a);
while( a[i++] != '\0' );
while( j++ < 4 )
b[j] = a[i-(5-j)];
printf("%s",b[4]);
system("PAUSE");
return 0;
}
#10
//写成函数吧,
char* GetStr(char src[], int nSrc, int nDest)
{
char* pDest=(char*)malloc(nDest+1);
for (int i=0; i<=nDest; i++) pDest[i]=src[nSrc-nDest+i];
return pDest;
}
int main()
{
char src[]={"abcdefghi"};
char* dest;
dest = GetStr(src, strlen(src), 4);
printf("%s\n", dest);
free(dest);
return 0;
}
#11
xue xi
#12
10#很强大
#13
都很强大。。。
#14
Good
#15
strstr()
#16
用指针也可以
#17
int main(void)
{
char str[10]="abcdefghi";
char *p=str+sizeof(str)-5;
printf("%s\n",p);
return 0;
}
#18
很强大,对1楼的有疑问
取倒数第四个地址不是也可以的吗
取倒数第四个地址不是也可以的吗
#19
//已知指向源字符串的指针,字符串长度
//返回源字符串的后面n个非‘\0’字符
char * getlaststring(char *source,int length,int n){
char *dest =(char*)malloc(n+1);
for(int i=0;i<n+1;i++){
dest[i]=source[length-n+i-1];
}
return dest;
}
//返回源字符串的后面n个非‘\0’字符
char * getlaststring(char *source,int length,int n){
char *dest =(char*)malloc(n+1);
for(int i=0;i<n+1;i++){
dest[i]=source[length-n+i-1];
}
return dest;
}
#20
还要考虑原字符串长度小于4的情况
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i;
char a[20], b[5];
scanf("%s",a);
strcpy(b, (strlen(a)>4?a+strlen(a)-4:a));
printf("%s\n",b);
system("PAUSE");
return 0;
}
#21
3,10楼都很不错,支持一下
#22
指针操作是最简单的
可能整个字符串长度小于4,
小心strncpy的第三个参数为负数
可能整个字符串长度小于4,
小心strncpy的第三个参数为负数
#23
楼主:
自己写吧!自己写了自己就会了!
上面这么多热心人!
自己写吧!自己写了自己就会了!
上面这么多热心人!
#24
很好,很强大.
#25
void right(char *src,char *dst,int rightnum)
{
if(strlen(src)>=rightnum)
strncpy(dst,src+(strlen(src)-rightnum),rightnum);
else
strncpy(dst,src,strlen(src));
}
#26
我呆了,很强大
#27
#include <string.h>
呵呵 测试一下
#28
void
找下感觉
#29
我醉了。。
#30
int ch;
char str[5] = "";
while(((ch = getchar()) != EOF) && (ch != '\0' || ch != '\n'))
{
str[0] = str[1];
str[1] = str[2];
str[2] = str[3];
str[3] = ch;
}
str[4] = '\0';
最近看TCPL有感(住:有input<4的情况未考虑)。
#31
#include<stdio.h>
#include<string.h>
char *getSub(char *str,int n)
{
int len=strlen(str);
char *subs;
if(len<n)
{
subs=NULL;
goto end;
}
subs=str+(len-n);
end:
return subs;
}
#include<string.h>
char *getSub(char *str,int n)
{
int len=strlen(str);
char *subs;
if(len<n)
{
subs=NULL;
goto end;
}
subs=str+(len-n);
end:
return subs;
}
#32
学习!!
#33
都很牛X啊!
#34
为了程序的完整性
应该加个判断条件
if(strlen(str)>=4)
应该加个判断条件
if(strlen(str)>=4)
#35
都是牛人
#36
3楼代码有问题, 怎么能说好呢?
char *s = "abcdefghi";
return strdup(s + strlen(s) - 4);
char *s = "abcdefghi";
return strdup(s + strlen(s) - 4);
#37
用指针就挺好
#38
恩是老火啊,我都忘记完啦,看代码都看不懂咯,看来C都被我忘得差不多咯
#39
为什么不想想如果是wchar上面的程序还适用吗?
#40
up
#41
#include <stdio.h>
#include <string.h>
void main()
{
char *s = "abcdefghi";
char getChar[4];
int len = strlen(s);
int i,j;
j = 0;
for(i = len-4;i<len;i++)
{
getChar[j++] = s[i];
}
printf("%s",getChar);
}
#include <string.h>
void main()
{
char *s = "abcdefghi";
char getChar[4];
int len = strlen(s);
int i,j;
j = 0;
for(i = len-4;i<len;i++)
{
getChar[j++] = s[i];
}
printf("%s",getChar);
}
#42
[code]
#include <string.h>
#include <stdio.h>
char* subStr(char* str, int n)
{
int len = strlen(str);
if(len < n)
return NULL;
char* res = (char *)malloc(n + 1);
strcpy(res, str + (len - n));
res[n] = '\0';
return res;
}
int main()
{
char * str = "abcdefghi";
printf("%s\n", subStr(str, 4));
return 0;
}
[/code]
#include <string.h>
#include <stdio.h>
char* subStr(char* str, int n)
{
int len = strlen(str);
if(len < n)
return NULL;
char* res = (char *)malloc(n + 1);
strcpy(res, str + (len - n));
res[n] = '\0';
return res;
}
int main()
{
char * str = "abcdefghi";
printf("%s\n", subStr(str, 4));
return 0;
}
[/code]
#43
[code=1]
#include <string.h>
#include <stdio.h>
char* subStr(char* str, int n)
{
int len = strlen(str);
if(len < n)
return NULL;
char* res = (char *)malloc(n + 1);
strcpy(res, str + (len - n));
res[n] = '\0';
return res;
}
int main()
{
char * str = "abcdefghi";
printf("%s\n", subStr(str, 4));
return 0;
}
[/code]
#include <string.h>
#include <stdio.h>
char* subStr(char* str, int n)
{
int len = strlen(str);
if(len < n)
return NULL;
char* res = (char *)malloc(n + 1);
strcpy(res, str + (len - n));
res[n] = '\0';
return res;
}
int main()
{
char * str = "abcdefghi";
printf("%s\n", subStr(str, 4));
return 0;
}
[/code]
#44
#include <stdio.h>
#include <string.h>
void main()
{
int num;
char a[]="abcdefghi";
num=strlen(a);
int i;
char b[5];
for(i=5;i>0;i--)
b[i-1]=a[num-5+i];
printf("%s\n",b);
}
#include <string.h>
void main()
{
int num;
char a[]="abcdefghi";
num=strlen(a);
int i;
char b[5];
for(i=5;i>0;i--)
b[i-1]=a[num-5+i];
printf("%s\n",b);
}
#45
void strstr(char *strDst,const char *strSrc)
{
assert(strDst!=NULL);
assert(strSrc!=NULL);
char *p=strDst;
for (int i=strlen(strSrc)-4;i<strlen(strSrc);i++)
{
*p=strSrc[i];
p++;
}
}
void main() {
char str1[]="abcdefghi";
char str2[10];
memset(str2,0,sizeof(str2));
strstr(str2,str1);
}
{
assert(strDst!=NULL);
assert(strSrc!=NULL);
char *p=strDst;
for (int i=strlen(strSrc)-4;i<strlen(strSrc);i++)
{
*p=strSrc[i];
p++;
}
}
void main() {
char str1[]="abcdefghi";
char str2[10];
memset(str2,0,sizeof(str2));
strstr(str2,str1);
}
#46
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i;
char a[20], b[5];
scanf("%s",a);
strcpy(b, (strlen(a)>4?a+strlen(a)-4:a));
printf("%s\n",b);
system("PAUSE");
return 0;
}
#47
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i;
char a[20], b[5];
scanf("%s",a);
strcpy(b, (strlen(a)> 4?a+strlen(a)-4:a));
printf("%s\n",b);
system("PAUSE");
return 0;
}
#48
大家好喜欢做这个题哦,我都看见5,6种方法了
#49
不是在另一帖中已经回你了吗?怎么又开了一贴?
#50
int num;
char a[]=abcdefghi;
num=sizeof(a);
2楼的这没问题?????????
char a[]=abcdefghi;
num=sizeof(a);
2楼的这没问题?????????
#1
main()
{
int num;
char a[]=abcdefghi;
num=sizeof(a);
char b[4]=a[num-4];
prtitf("s%\n",b);
}
{
int num;
char a[]=abcdefghi;
num=sizeof(a);
char b[4]=a[num-4];
prtitf("s%\n",b);
}
#2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i;
char a[20], b[5];
scanf("%s",a);
for ( i = 0; i <=4; i++ )
b[i] = a[strlen(a)-(4-i)]; //包括'\0'
printf("%s\n%s\n",a,b);
system("PAUSE");
return 0;
}
#3
用strcpy
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i;
char a[20], b[5];
scanf("%s",a);
strcpy(b, (a+strlen(a)-4));
printf("%s\n",b);
system("PAUSE");
return 0;
}
#4
strncpy函数也可以,
#5
#include <string.h>
#include<stdio.h>
int main()
{
char s[]="123456789";
char p[4];
strncpy(p,s+5,strlen(s)-5);
printf("%0.4s\n",p);
getchar();
return 0;
}
#include<stdio.h>
int main()
{
char s[]="123456789";
char p[4];
strncpy(p,s+5,strlen(s)-5);
printf("%0.4s\n",p);
getchar();
return 0;
}
#6
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[]= "To be or not to be";
char str2[6];//取最后五个
strncpy (str2,str1+strlen(str1)-5, 5);
str2[5]='\0';
puts (str2);
return 0;
}
#7
我觉得1楼的代码是有问题的。
2楼和3楼的代码写得真好!
2楼和3楼的代码写得真好!
#8
#include <stdio.h>
int main(void)
{char a[]="abcdefghi",b[5];
int i, k=0, num=strlen(a);
for(i=num-4;i<=num;i++)
b[k++]=a[i];
printf("%s\n",b);
getchar();
return 0;
}
int main(void)
{char a[]="abcdefghi",b[5];
int i, k=0, num=strlen(a);
for(i=num-4;i<=num;i++)
b[k++]=a[i];
printf("%s\n",b);
getchar();
return 0;
}
#9
再来个不要string.h的
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i = 0, j = -1;
char a[20], b[5];
scanf("%s",a);
while( a[i++] != '\0' );
while( j++ < 4 )
b[j] = a[i-(5-j)];
printf("%s",b[4]);
system("PAUSE");
return 0;
}
#10
//写成函数吧,
char* GetStr(char src[], int nSrc, int nDest)
{
char* pDest=(char*)malloc(nDest+1);
for (int i=0; i<=nDest; i++) pDest[i]=src[nSrc-nDest+i];
return pDest;
}
int main()
{
char src[]={"abcdefghi"};
char* dest;
dest = GetStr(src, strlen(src), 4);
printf("%s\n", dest);
free(dest);
return 0;
}
#11
xue xi
#12
10#很强大
#13
都很强大。。。
#14
Good
#15
strstr()
#16
用指针也可以
#17
int main(void)
{
char str[10]="abcdefghi";
char *p=str+sizeof(str)-5;
printf("%s\n",p);
return 0;
}
#18
很强大,对1楼的有疑问
取倒数第四个地址不是也可以的吗
取倒数第四个地址不是也可以的吗
#19
//已知指向源字符串的指针,字符串长度
//返回源字符串的后面n个非‘\0’字符
char * getlaststring(char *source,int length,int n){
char *dest =(char*)malloc(n+1);
for(int i=0;i<n+1;i++){
dest[i]=source[length-n+i-1];
}
return dest;
}
//返回源字符串的后面n个非‘\0’字符
char * getlaststring(char *source,int length,int n){
char *dest =(char*)malloc(n+1);
for(int i=0;i<n+1;i++){
dest[i]=source[length-n+i-1];
}
return dest;
}
#20
还要考虑原字符串长度小于4的情况
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i;
char a[20], b[5];
scanf("%s",a);
strcpy(b, (strlen(a)>4?a+strlen(a)-4:a));
printf("%s\n",b);
system("PAUSE");
return 0;
}
#21
3,10楼都很不错,支持一下
#22
指针操作是最简单的
可能整个字符串长度小于4,
小心strncpy的第三个参数为负数
可能整个字符串长度小于4,
小心strncpy的第三个参数为负数
#23
楼主:
自己写吧!自己写了自己就会了!
上面这么多热心人!
自己写吧!自己写了自己就会了!
上面这么多热心人!
#24
很好,很强大.
#25
void right(char *src,char *dst,int rightnum)
{
if(strlen(src)>=rightnum)
strncpy(dst,src+(strlen(src)-rightnum),rightnum);
else
strncpy(dst,src,strlen(src));
}
#26
我呆了,很强大
#27
#include <string.h>
呵呵 测试一下
#28
void
找下感觉
#29
我醉了。。
#30
int ch;
char str[5] = "";
while(((ch = getchar()) != EOF) && (ch != '\0' || ch != '\n'))
{
str[0] = str[1];
str[1] = str[2];
str[2] = str[3];
str[3] = ch;
}
str[4] = '\0';
最近看TCPL有感(住:有input<4的情况未考虑)。
#31
#include<stdio.h>
#include<string.h>
char *getSub(char *str,int n)
{
int len=strlen(str);
char *subs;
if(len<n)
{
subs=NULL;
goto end;
}
subs=str+(len-n);
end:
return subs;
}
#include<string.h>
char *getSub(char *str,int n)
{
int len=strlen(str);
char *subs;
if(len<n)
{
subs=NULL;
goto end;
}
subs=str+(len-n);
end:
return subs;
}
#32
学习!!
#33
都很牛X啊!
#34
为了程序的完整性
应该加个判断条件
if(strlen(str)>=4)
应该加个判断条件
if(strlen(str)>=4)
#35
都是牛人
#36
3楼代码有问题, 怎么能说好呢?
char *s = "abcdefghi";
return strdup(s + strlen(s) - 4);
char *s = "abcdefghi";
return strdup(s + strlen(s) - 4);
#37
用指针就挺好
#38
恩是老火啊,我都忘记完啦,看代码都看不懂咯,看来C都被我忘得差不多咯
#39
为什么不想想如果是wchar上面的程序还适用吗?
#40
up
#41
#include <stdio.h>
#include <string.h>
void main()
{
char *s = "abcdefghi";
char getChar[4];
int len = strlen(s);
int i,j;
j = 0;
for(i = len-4;i<len;i++)
{
getChar[j++] = s[i];
}
printf("%s",getChar);
}
#include <string.h>
void main()
{
char *s = "abcdefghi";
char getChar[4];
int len = strlen(s);
int i,j;
j = 0;
for(i = len-4;i<len;i++)
{
getChar[j++] = s[i];
}
printf("%s",getChar);
}
#42
[code]
#include <string.h>
#include <stdio.h>
char* subStr(char* str, int n)
{
int len = strlen(str);
if(len < n)
return NULL;
char* res = (char *)malloc(n + 1);
strcpy(res, str + (len - n));
res[n] = '\0';
return res;
}
int main()
{
char * str = "abcdefghi";
printf("%s\n", subStr(str, 4));
return 0;
}
[/code]
#include <string.h>
#include <stdio.h>
char* subStr(char* str, int n)
{
int len = strlen(str);
if(len < n)
return NULL;
char* res = (char *)malloc(n + 1);
strcpy(res, str + (len - n));
res[n] = '\0';
return res;
}
int main()
{
char * str = "abcdefghi";
printf("%s\n", subStr(str, 4));
return 0;
}
[/code]
#43
[code=1]
#include <string.h>
#include <stdio.h>
char* subStr(char* str, int n)
{
int len = strlen(str);
if(len < n)
return NULL;
char* res = (char *)malloc(n + 1);
strcpy(res, str + (len - n));
res[n] = '\0';
return res;
}
int main()
{
char * str = "abcdefghi";
printf("%s\n", subStr(str, 4));
return 0;
}
[/code]
#include <string.h>
#include <stdio.h>
char* subStr(char* str, int n)
{
int len = strlen(str);
if(len < n)
return NULL;
char* res = (char *)malloc(n + 1);
strcpy(res, str + (len - n));
res[n] = '\0';
return res;
}
int main()
{
char * str = "abcdefghi";
printf("%s\n", subStr(str, 4));
return 0;
}
[/code]
#44
#include <stdio.h>
#include <string.h>
void main()
{
int num;
char a[]="abcdefghi";
num=strlen(a);
int i;
char b[5];
for(i=5;i>0;i--)
b[i-1]=a[num-5+i];
printf("%s\n",b);
}
#include <string.h>
void main()
{
int num;
char a[]="abcdefghi";
num=strlen(a);
int i;
char b[5];
for(i=5;i>0;i--)
b[i-1]=a[num-5+i];
printf("%s\n",b);
}
#45
void strstr(char *strDst,const char *strSrc)
{
assert(strDst!=NULL);
assert(strSrc!=NULL);
char *p=strDst;
for (int i=strlen(strSrc)-4;i<strlen(strSrc);i++)
{
*p=strSrc[i];
p++;
}
}
void main() {
char str1[]="abcdefghi";
char str2[10];
memset(str2,0,sizeof(str2));
strstr(str2,str1);
}
{
assert(strDst!=NULL);
assert(strSrc!=NULL);
char *p=strDst;
for (int i=strlen(strSrc)-4;i<strlen(strSrc);i++)
{
*p=strSrc[i];
p++;
}
}
void main() {
char str1[]="abcdefghi";
char str2[10];
memset(str2,0,sizeof(str2));
strstr(str2,str1);
}
#46
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i;
char a[20], b[5];
scanf("%s",a);
strcpy(b, (strlen(a)>4?a+strlen(a)-4:a));
printf("%s\n",b);
system("PAUSE");
return 0;
}
#47
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i;
char a[20], b[5];
scanf("%s",a);
strcpy(b, (strlen(a)> 4?a+strlen(a)-4:a));
printf("%s\n",b);
system("PAUSE");
return 0;
}
#48
大家好喜欢做这个题哦,我都看见5,6种方法了
#49
不是在另一帖中已经回你了吗?怎么又开了一贴?
#50
int num;
char a[]=abcdefghi;
num=sizeof(a);
2楼的这没问题?????????
char a[]=abcdefghi;
num=sizeof(a);
2楼的这没问题?????????