打印char数组的一部分

时间:2011-03-04 02:39:15

标签: c

所以:

char *someCArray; # something

我想从“某事”打印出“ethin”。

4 个答案:

答案 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)手册页