我是C的新手。我有这样的代码
#include <stdio.h>
#include <string.h>
int i = 0;
int main()
{
char text[] = "..... $it is beautiful : $yes you are correct....";
char * sub = "$";
char * ret = strstr(text, sub);
if (ret != NULL)
{
printf("the statement is : %s", ret);
}
}
我想只打印代码的这一部分:$it is beautiful
。
有没有办法只打印那个声明?让我们假设这是全身文本的一部分,所以除了使用strlen
之外的任何想法?
当出现第二个$
时,不应该打印。这是我的基本要求
答案 0 :(得分:0)
根据您的输出要求,strchr
与:
或$
一起使用
#include <stdio.h>
#include <string.h>
int main() {
char text[] = "..... $it is beautiful : $yes you are correct....";
char * ret = strstr(text, "$");
if (ret != NULL) {
char *colon;
if (colon = strrchr(ret, ':'))
*colon = '\0';
printf("The statement is: %s", ret);
}
return 0;
}
<强>输出强>
声明是:$美丽
答案 1 :(得分:0)
这应该有用。
#include <stdio.h>
#include <string.h>
int i=0;
int main()
{
char text[] = "..... $it is beautiful : $yes you are correct....";
char* sub = "$";
char* ret = strstr(text,sub);
char *out = malloc(strlen(text)+1); //To make the solution generic
if (ret!=NULL )
{
sscanf(ret, "$%[^$^:]", out);
printf("the statement is : [%s] \n",out );
}
free(out);
}