我试图编写一个程序来反转用户输入并将其打印回来,以下代码工作正常:
#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 :(得分: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