我最近在練習回圈。我學會了如何列印:例如列印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
代替?謝謝。
uj5u.com熱心網友回復:
這很容易做到。例如
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
uj5u.com熱心網友回復:
你基本上會在你的回圈中倒退。
代替:
for (int i=1; i<=strlen(s); i ){
你會有
for (int i=strlen(s); i>0; i--){
uj5u.com熱心網友回復:
您可以使用 回圈遍歷字串,但了解縮短字串并用于列印字串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 = '\0';
printf("%s\n", s);
}
return 0;
}
請注意,這種方法具有破壞性。完成后,字串為空。作為練習,解決這個問題可能會有所幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/414411.html
標籤:
