2014-11-08 129 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