当前位置:  开发笔记 > 程序员 > 正文

在C中打印char []的一部分的最简单方法

如何解决《在C中打印char[]的一部分的最简单方法》经验,为你挑选了2个好方法。

假设我有一个char* str = "0123456789"并且我想要剪切第一个和最后三个字母并打印中间,这是最简单,最安全的方法吗?

现在的诀窍:要切割的部分和要打印的部分是可变大小的,所以我可以有一个非常长的char*,或者非常小的char*.



1> Robert Gambl..:

您可以使用printf(),并使用特殊格式字符串:

char *str = "0123456789";
printf("%.6s\n", str + 1);

%s转换说明符中的精度指定要打印的最大字符数.您也可以使用变量在运行时指定精度:

int length = 6;
char *str = "0123456789";    
printf("%.*s\n", length, str + 1);

在此示例中,*用于指示下一个参数(length)将包含%s转换的精度,相应的参数必须为a int.

如上所述,指针算术可用于指定起始位置.

[编辑]

还有一点,如果您的字符串比精度说明符短,则会打印更少的字符,例如:

int length = 10;
char *str = "0123456789";
printf("%.*s\n", length, str + 5);

将打印" 56789".如果始终要打印一定数量的字符,请同时指定最小字段宽度和精度:

printf("%10.10s\n", str + 5);

要么

printf("%*.*s\n", length, length, str + 5);

将打印:

"     56789"

您可以使用减号在字段中左对齐输出:

printf("%-10.10s\n", str + 5);

最后,最小场宽和精度可以不同,即

printf("%8.5s\n", str);

将在8个字符的字段中打印最多5个字符右对齐.



2> Jonathan Lef..:

Robert Gamble和Steve分别拥有大部分内容.组装成一个整体:

void print_substring(const char *str, int skip, int tail)
{
    int len = strlen(str);
    assert(skip >= 0);
    assert(tail >= 0 && tail < len);
    assert(len > skip + tail);
    printf("%.*s", len - skip - tail, str + skip);
}

调用示例:

print_substring("0123456789", 1, 3);

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有