问题:输入一串字符串,在输入m,若字符串长度大于m,就输出后m个字符,若小于m,就把整个字符串输出
#include<iostream>
#include<cstring>
using namespace std;
#define MAX 30
int main(){
unsigned int m;
unsigned int i=0;
char ch;
char buf[MAX];
scanf("%d",&m);
getchar();//用于吸收多余的换行符
while((ch=getchar())!='\n'){
buf[i] = ch;
i++;
} //值传递
buf[i] = '\0';//由于输入使用的是getchar
if(strlen(buf)<m){
for(i=0;i<strlen(buf);i++)
printf("%c",buf[i]);
printf("\t字符串的长度为%d",strlen(buf));
}
else{
for(i=(strlen(buf)-1-(m-1));i<strlen(buf);i++)
printf("%c",buf[i]);
printf("\tm的值:%d",m);
}
return 0;
}
需注意:scanf后面加getchar()是为了吸收换行
strlen()函数针对的是unsigned int 型数据
字符串的输入用getchar(cin,str)可以忽略空格;
getchar输入时,必须在最后给字符串加上‘\0’,才能printf不出现乱码现象