2014-11-08 109 views
0

我試圖寫一個程序來扭轉用戶輸入並打印回給他們,下面的代碼工作正常:嘗試使用'。'終止while循環

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

char reverse (char inp [20]) { 

    char rev [20]; 
    int l, i=0, j=0, k=1; 
    l = strlen(inp); 

    while (i<l) { 

     rev[j] = inp[l-k]; 
     i++; 
     j++; 
     k++; 
    } 

    printf("%s \n", rev); 
    return 0; 
} 
int main() { 

    char input [20]; 
    fgets(input, 20, stdin); 
    reverse (input); 

    return 0; 

} 

但我想程序之前只打印一切一個'.',我試圖用:

if (inp[i] == '.') { break; } 

在while循環,rev[j] =之前。但他們都返回相同的問題,即如果用戶輸入:

John . Jones 

它將打印:

seno 

我真的很新的這一點,但任何幫助將不勝感激。

+0

'如果( '' INP [I-1] ==){打破; ''? – Rizier123 2014-11-08 15:18:22

+0

你能指定你的預期輸出嗎?它是'nhoJ'還是'senoJ'? – Nemesis 2014-11-08 15:20:20

+0

感謝Rizier123!認爲這簡直是荒謬的事情。 – 2014-11-08 15:26:34

回答

1

但我想程序如果你得到'.'然後簡單地從while環打破只有前'.'

打印一切。並用\0終止char數組。


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

char reverse (char inp [20]) { 

    char rev [20]; 
    int l, i=0, j=0, k=1; 
    l = strlen(inp); 

    while (i<l) { 
     if (inp[l-k] == '.') 
      break; 
     rev[j] = inp[l-k]; 
     i++; 
     j++; 
     k++; 
    } 
    rev[j]='\0'; //Terminate the char array with \0 
    printf("%s \n", rev); 
    return 0; 
} 
int main() { 

    char input [20]; 
    fgets(input, 20, stdin); 
    reverse (input); 

    return 0; 

} 

輸入:

John . Johnes 

輸出:

senhoJ