如何在C中打印字符串的一部分

如何在C中打印字符串的一部分,c,string,character,C,String,Character,我想打印字符串的一部分。我的程序应该从开始打印字符,直到字符串中的字符将是这样的示例字符:\” 例如: char* text = "abcdef\"ghij"; 我想得到:abcdef 我没有C语言方面的经验,请明确地帮助我。使用*字段宽度选择要打印的字符数: #include <stdio.h> #include <string.h> char* text = "abcdef\"ghij"; printf("%.*s\n", (int) (strchr(text,

我想打印字符串的一部分。我的程序应该从开始打印字符,直到字符串中的字符将是这样的示例字符:\”

例如:

char* text = "abcdef\"ghij";
我想得到:
abcdef


我没有C语言方面的经验,请明确地帮助我。

使用
*
字段宽度选择要打印的字符数:

#include <stdio.h>
#include <string.h>

char* text = "abcdef\"ghij";
printf("%.*s\n", (int) (strchr(text, '"') - text), text);
#包括
#包括
char*text=“abcdef\”ghij”;
printf(“%.*s\n”,(int)(strhr(text,“)-text),text);

使用
*
字段宽度选择要打印的字符数:

#include <stdio.h>
#include <string.h>

char* text = "abcdef\"ghij";
printf("%.*s\n", (int) (strchr(text, '"') - text), text);
#包括
#包括
char*text=“abcdef\”ghij”;
printf(“%.*s\n”,(int)(strhr(text,“)-text),text);

在循环中逐字符打印,直到出现停止字符或当前字符变为假字符,即为空终止符

#include <stdio.h>

char* text = "abcdef\"ghij";
char stop = '"';

for (char *i = text; *i && *i != stop; i++)
    putc(*i, stdout);
#包括
char*text=“abcdef\”ghij”;
字符停止=“”;
for(char*i=text;*i&&*i!=stop;i++)
putc(*i,标准输出);

在循环中逐字符打印,直到出现停止字符或当前字符变为假字符,即为空终止符

#include <stdio.h>

char* text = "abcdef\"ghij";
char stop = '"';

for (char *i = text; *i && *i != stop; i++)
    putc(*i, stdout);
#包括
char*text=“abcdef\”ghij”;
字符停止=“”;
for(char*i=text;*i&&*i!=stop;i++)
putc(*i,标准输出);

这不是一个好方法,因为我不知道在哪个地方会是那个角色。我只举了一个例子。它一定是通用的非常感谢你。这是我正在寻找的不是一个好方法,因为我不知道在哪个地方会是那个角色。我只举了一个例子。它一定是通用的非常感谢你。它是这就是我想要的
printf(“%c”
?为什么不
fputc
?!你是对的,严格地说它是有效的,所以我取消了我的否决票。但是你调用printf()的开销很大,让此函数为字符串的每个字符解释其命令字符串,并传递给操作系统。它只对固定大小的字符串有效。在循环的每次迭代中调用strlen是不好的做法。作为strlen()计算字符数,直到他达到字符0,您可以通过组合两个迭代来进一步改进循环外观:for(int i=0;text[i]&&text[i]!='\';i++)putchar(text[i]);@Christophe i应用了您的改进。当它在单引号中时,您真的必须跳出
”?
printf(%c“
?为什么不
fputc
?!你是对的,严格地说它是有效的,所以我取消了我的否决票。但是你调用printf()的开销很大。”,让此函数为字符串的每个字符解释其命令字符串,并传递给操作系统。它只对固定大小的字符串有效。在循环的每次迭代中调用strlen是不好的做法。作为strlen()计算字符数,直到他达到字符0,您可以通过组合两个迭代来进一步改进循环外观:for(int i=0;text[i]&&text[i]!='\';i++)putchar(text[i]);@Christophe i应用了您的改进。当
用单引号括起来时,您真的必须跳过