如何在 C 中打印字符串中的特定字符
How to print a specific character from a string in C
我最近在练习循环。我学会了如何打印:例如 home
到 h
ho
hom
home
。通过使用
#include <stdio.h>
#include <string.h>
int main (){
char s[100];
printf("Input string = ");
scanf("%[^\n]", s);
for (int i=1; i<=strlen(s); i++){
for(int j = 0; j<i; j++)
printf("%c", s[j]);
printf("\n");
}
return 0;
我怎样才能扭转它,这样它就可以
home
hom
ho
h
反而?谢谢。
你基本上会在你的循环中倒退。
而不是:
for (int i=1; i<=strlen(s); i++){
你会
for (int i=strlen(s); i>0; i--){
这很容易做到。例如
for ( size_t i = strlen( s ); i != 0; i-- )
{
for ( size_t j = 0; j < i; j++ )
{
putchar( s[j] );
}
putchar( '\n' );
}
另一种方式如下
for ( size_t i = strlen( s ); i != 0; i-- )
{
printf( ".*s\n", ( int )i, s );
}
前提是 int
类型的对象能够存储传递的字符串的长度。
这是一个演示程序。
#include <stdio.h>
#include <string.h>
int main( void )
{
const char *s = "home";
for (size_t i = strlen( s ); i != 0; i--)
{
printf( "%.*s\n", ( int )i, s );
}
}
程序输出为
home
hom
ho
h
您可以使用 putc
遍历字符串,但它也可能有助于理解缩短字符串并使用 %s
打印字符串的破坏性方法。例如:
#include <stdio.h>
#include <string.h>
int
main(int argc, char **argv)
{
char *s = argc > 1 ? argv[1] : strdup("home");
for( char *e = s + strlen(s); e > s; e -= 1 ){
*e = '[=10=]';
printf("%s\n", s);
}
return 0;
}
请注意,此方法具有破坏性。完成后,字符串为空。作为练习,修复该问题可能会有所帮助。
我最近在练习循环。我学会了如何打印:例如 home
到 h
ho
hom
home
。通过使用
#include <stdio.h>
#include <string.h>
int main (){
char s[100];
printf("Input string = ");
scanf("%[^\n]", s);
for (int i=1; i<=strlen(s); i++){
for(int j = 0; j<i; j++)
printf("%c", s[j]);
printf("\n");
}
return 0;
我怎样才能扭转它,这样它就可以
home
hom
ho
h
反而?谢谢。
你基本上会在你的循环中倒退。
而不是:
for (int i=1; i<=strlen(s); i++){
你会
for (int i=strlen(s); i>0; i--){
这很容易做到。例如
for ( size_t i = strlen( s ); i != 0; i-- )
{
for ( size_t j = 0; j < i; j++ )
{
putchar( s[j] );
}
putchar( '\n' );
}
另一种方式如下
for ( size_t i = strlen( s ); i != 0; i-- )
{
printf( ".*s\n", ( int )i, s );
}
前提是 int
类型的对象能够存储传递的字符串的长度。
这是一个演示程序。
#include <stdio.h>
#include <string.h>
int main( void )
{
const char *s = "home";
for (size_t i = strlen( s ); i != 0; i--)
{
printf( "%.*s\n", ( int )i, s );
}
}
程序输出为
home
hom
ho
h
您可以使用 putc
遍历字符串,但它也可能有助于理解缩短字符串并使用 %s
打印字符串的破坏性方法。例如:
#include <stdio.h>
#include <string.h>
int
main(int argc, char **argv)
{
char *s = argc > 1 ? argv[1] : strdup("home");
for( char *e = s + strlen(s); e > s; e -= 1 ){
*e = '[=10=]';
printf("%s\n", s);
}
return 0;
}
请注意,此方法具有破坏性。完成后,字符串为空。作为练习,修复该问题可能会有所帮助。