2014-11-08 2 views
0

Я пытался написать программу для обратного ввода данных пользователя и распечатать его обратно к ним, следующий код работает отлично:Пытается использовать '.' завершить в то время как петля

#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; } 

в то время цикла до rev[j] =. Но все они возвращают один и тот же вопрос, где, если пользователь вводит:

John . Jones 

будет печатать:

seno 

Я действительно новичок в этом, но любая помощь будет принята с благодарностью.

+0

', если ('' INP [I-1] ==) { ломать; } '? – Rizier123

+0

Можете ли вы указать свой антиципативный выход? Это 'nhoJ' или' senoJ'? – Nemesis

+0

Спасибо Rizier123! Думал, что это было что-то смехотворно простое. –

ответ

1

Но я хотел бы, чтобы программа только печатать все до '.'

Если вы получаете '.' то просто вырваться из петли while. И завершите массив символов с помощью \0.


#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