所以:
char *someCArray; # something
我想从“某事”打印出“ethin”。
答案 0 :(得分:21)
您可以使用printf
精度说明符
#include <stdio.h>
int main(void) {
char s[] = "something";
int start = 3;
int len = 5;
printf("%.*s\n", len, s + start);
return 0;
}
代码也发布到了键盘:http://codepad.org/q5rS81ox
答案 1 :(得分:1)
考虑到您只想打印“ ethin ”而不是“ ething ”,这样就可以了。
正如@Mahesh在评论中所说,你必须从你想要打印字符的位置开始和结束位置,以使你的程序更加通用。
Char *p ="Something";
char *temp=p;
//考虑到你可能会在某个时间点要求你的字符串的基地址。
temp=temp+3;
while(*temp!='g')
printf("%c",*temp++);
如果您对您的要求更具体,我们可以为您提供进一步的帮助。这些是C语言的基础知识,因此您必须彻底研究c中的数组和指针。
编辑:
我将无法向您提供完整的代码,因为这会违反Stackoverflow规则和moto,就像“技术资源库和旁边的天堂”对于程序员来说。因为我只能给你逻辑。
继续打印字符,直到开始和结束位置相等或差异变为零。您可以选择以上两种方法中的任何一种。
答案 2 :(得分:0)
尝试
char* strSth = "something";
std::string strPart;
strPart.assign(strSth+3,strSth+8);
std::cout << strPart;
结果将是:“ethin”
答案 3 :(得分:0)
#include <stdio.h>
int main()
{
char a[1024] = "abcdefghijklmnopqrstuvwxyz";
printf("Characters 0 through 2 of a[]: %.3s\n", a);
printf("Characters 10 through 15 of a[]: %.6s\n", &a[10]);
return 0;
}
打印此
Characters 0 through 2 of a[]: abc
Characters 10 through 15 of a[]: klmnop
printf字符串中的“%.Ns”表示法是带有精确说明符的“%s”。检查printf(3)手册页