2016-05-30 6 views
-5

ラインを逆転リバース機能ではあるが主な機能には置かれていない。ループ内私は、文字列(K & R)を逆転しようとしていたが、私がメインでのprintfを使用しようとすると、それは何も出力しませんが、 が、私は逆の機能でのprintfを使用しようとするとき、それはプリントがかかる理由混乱works.Its

#include<stdio.h> 
#define MAXLINE 1000 
void reverse(char*); 
int getlen(char*,int); 
void main() 
{ 
    int i=0; 
    char line[MAXLINE]; 
    printf("\nEnter anything\n"); 
    while((getlen(line,MAXLINE))>1) 
    { 
     reverse(line); 
    } 
    printf("%s",line);//problem here 
} 
int getlen(char line[],int len) 
{ 
    int c,i=0; 
    while((c=getchar())!=EOF && c!='\n' && (i<(len-2)))//last two for \n and \0 
    { 
     line[i]=c; 
     ++i; 
    } 
    if(c=='\n') 
     { 
      line[i]=c; 
      ++i; 
     } 

    line[i]='\0'; 
    return(i);//returns 1 if nothing is written 
} 
void reverse(char line[]) 
{ 
    int i=0,j=0; 
    char temp; 
    while(line[i]!='\0') 
    ++i; 
    --i; 
    if(line[i]=='\n') 
    --i; 
    while(j<i) 
    { 
     temp=line[j]; 
     line[j]=line[i]; 
     line[i]=temp; 
     ++j; 
     --i; 

    } 

} 
+0

コンパイラの警告はありますか? – user3078414

+0

++ i; --i;これは何ですか? – Boltz0r

+0

@ Boltz0r欠落しているカッコに注意してください.... –

答えて

0

印刷

#include<stdio.h> 
#define MAXLINE 1000 
void reverse(char*); 
int getlen(char*,int); 
void main() 
{ 
    int i=0; 
    char line[MAXLINE]; 
    printf("\nEnter anything\n"); 
    while((getlen(line,MAXLINE))>1) 
    { 
     printf("%s",line);//problem here 
     reverse(line); 
     printf("%s",line);//problem here 
    } 

} 
int getlen(char line[],int len) 
{ 
    int c,i=0; 
    while((c=getchar())!=EOF && c!='\n' && (i<(len-2)))//last two for \n and \0 
    { 
     line[i]=c; 
     ++i; 
    } 
    if(c=='\n') 
     { 
      line[i]=c; 
      ++i; 
     } 

    line[i]='\0'; 
    return(i);//returns 1 if nothing is written 
} 
void reverse(char line[]) 
{ 
    int i=0,j=0; 
    char temp; 
    while(line[i]!='\0') 
    ++i; 
    --i; 
    if(line[i]=='\n') 
    --i; 
    while(j<i) 
    { 
     temp=line[j]; 
     line[j]=line[i]; 
     line[i]=temp; 
     ++j; 
     --i; 

    } 

} 

テストは

$ gcc main.c 
$ ./a.out 

Enter anything 
backwards 
backwards 
sdrawkcab 

また、コードがあなたのコードに非常に小さな変更で文字列を逆にそれをonlineを試すことができます。

+1

これは私が理解できない問題です、なぜループ内でなぜそれがoursideを動かさないのですか、私は配列を呼んでいます。 – Bazooka47

+0

@ Bazooka47このリンクに従ってくださいhttp://ideone.com/55kLBT助けてください?コードは、コードを少し変更して文字列を反転します。 –

+1

私は理解していないものは、私は参照によって変数を呼び出す場合、それはループの外だった場合は同じ印刷するべきではないですか? – Bazooka47

関連する問題

 関連する問題