首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用'.‘终止while循环

尝试使用'.‘终止while循环
EN

Stack Overflow用户
提问于 2014-11-08 23:15:35
回答 1查看 44关注 0票数 0

我曾尝试编写一个程序来反转用户输入,并将其打印回用户,下面的代码运行良好:

代码语言:javascript
复制
#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; 

}

但我希望程序只打印'.'之前的所有内容,我尝试使用:

代码语言:javascript
复制
if ( inp[i] == '.') { break; }

在while循环中,在rev[j] =之前。但它们都返回相同的问题,如果用户输入:

代码语言:javascript
复制
John . Jones 

它将打印:

代码语言:javascript
复制
seno 

我对此真的很陌生,但任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2014-11-08 23:32:53

,但我希望程序只打印'.'之前的所有内容

如果你得到了'.',那么简单地从while循环中中断。并使用\0终止字符数组。

代码语言:javascript
复制
#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; 

}

输入:

代码语言:javascript
复制
John . Johnes

输出:

代码语言:javascript
复制
senhoJ
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26818579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档