如何在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应用了您的改进。当“
用单引号括起来时,您真的必须跳过”
?