试着用'。'循环时终止

时间:2014-11-08 15:15:35

标签: c macos while-loop textedit

我试图编写一个程序来反转用户输入并将其打印回来,以下代码工作正常:

#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 

我对此很陌生,但任何帮助都会非常感激。

1 个答案:

答案 0 :(得分: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