fgets是會讀取回車換行符的。有時候我們並不希望在字符串中存在換行符。
#include <stdio.h>
int main (int argc,char *argv[])
{
char str[30]="";
//scanf("%s",str);
printf("隨便輸入一個字符串唄:");
fgets(str,sizeof(str),stdin);
printf("%s",str);//注意:此處並沒有換行符
printf("咋就換行了呢?\n");
return 0;
}
運行結果
換行原因:輸入字符串時,用換行符結束了字符串的輸入,這時候fgets()將換行符也保存下來,並且輸出了。這在很多時候會造成麻煩。那如解決掉呢
解決方法
1、從’\n’處切割字符串
strtok(str,"\n");//切割函數,從 \n 切割
#include <stdio.h>
int main (int argc,char *argv[])
{
char str[30]="";
//scanf("%s",str);
printf("隨便輸入一個字符串唄:");
fgets(str,sizeof(str),stdin);
strtok(str,"\n");
printf("%s",str);
printf("咋就換行了呢?\n");
return 0;
}
運行結果:
2、把獲取的字符串真實長度的最後一位置爲零
str[strlen(str)-1]='\0';
#include <stdio.h>
#include <string.h>
int main (int argc,char *argv[])
{
char str[30]="";
//scanf("%s",str);
printf("隨便輸入一個字符串唄:");
fgets(str,sizeof(str),stdin);
str[strlen(str)-1]='\0';
printf("%s",str);
printf("咋就換行了呢?\n");
return 0;
}
運行結果: