(c語言)fgest()鍵盤獲取後解決換行符'\n'的問題

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;
}

運行結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章