使用sprintf格式化char数组的打印

时间:2015-07-02 08:59:56

标签: c printing

我有一个包含一些字符串的char数组 例如

char* arr = "ABCDEFGHIJKL ZMN OPQOSJFS"

和字符串

char* string = "ZMN"

是否有任何打印方法只会在第一次出现字符串后打印arr的内容? 在这种情况下,它将打印" OPQOSJFS"

sprintf如何,如果是,我该怎么做?

3 个答案:

答案 0 :(得分:4)

sprintf在这里不会帮助你;使用strstr查找出现的情况,然后从那里打印源字符串:

// note: your string constants should be of type 'const char*'
const char* haystack = "ABCDEFGHIJKL ZMN OPQOSJFS";
const char* needle = "ZMN";

// find occurence of the string
const char* out = strstr(haystack, needle);
if(out != NULL) {
    // print string, starting from the end of the occurence
    out += strlen(needle);
    printf("The string is: %s", out);
}

答案 1 :(得分:3)

首先,我告诉你,

  

我有一个char数组,其中包含一些字符串,例如

char* arr = "ABCDEFGHIJKL ZMN OPQOSJFS"

错了。 "ABCDEFGHIJKL ZMN OPQOSJFS"是一个字符串文字,arr只是一个指针,而不是一个数组。

如果确实需要将arr称为数组,则需要将其编写为

 char arr[] = "ABCDEFGHIJKL ZMN OPQOSJFS";

现在,根据您的要求,您可以在string.h标题中查看strstr()函数原型。

原型:

char *strstr(const char *haystack, const char *needle);

说明

  

strstr()函数查找字符串needle中第一次出现的子串haystack

因此,如果它返回非NULL指针,您可以使用该值指出子字符串的位置,并使用index,您可以获得源字符串所需的部分。

答案 2 :(得分:2)

strstr将为您提供指向您要查找的子字符串的指针。 然后,您可以跳过此字符串并printf其内容。

char * sub = strstr(arr, string);
sub += strlen(string);
printf("%s\n", sub);