怎么清除空格和回车呢?()

如何清除空格和回车呢?(在线等)
我的代码如下,在主程序下运行到输入操作编号时就不由人输出,而是直接跳过了!
#include <stdio.h>
#include <string.h>

#define MAX_USER_COUNT 10       // 一个至多为10个用户的文件系统
#define MAX_SAVED_FILE_COUNT 10 // 每次用户至多保存10个文件
#define MAX_OPEN_FILE_COUNT 5   // 一次运行用户至多可以打开5个文件

// 文件操作权限枚举
typedef enum
{
CanReadWrite=1, // 可进行读写执行操作
NoReadWrite = 0, // 不可进行读写执行操作
}Access;

//
//UFD用户文件目录
typedef struct
{
char fileName[40];   // 文件名
    Access accessType;   // 文件保护码
}FileDirectory;

typedef struct
{
FileDirectory file[MAX_SAVED_FILE_COUNT];
int length;          // 用户文件目录的长度
}UserFileDirectory;

//
// MFD主目录结构
typedef struct  
{
char userName[40];      // 用户名
    UserFileDirectory *pUFD;// 指向该用户下的文件目录的首地址
}MainFileDirectory;

// AFD打开文件目录,即运行文件目录
typedef struct  
{
char fileName[40]; // 打开的文件名
int type;          // 文件的状态,1表示可以用,0表示已经删除
}AccessFileDirectory;

MainFileDirectory MFD[MAX_USER_COUNT];
AccessFileDirectory AFD[MAX_OPEN_FILE_COUNT];
UserFileDirectory UFD[MAX_SAVED_FILE_COUNT];

int afdCount = 0; // 当前已经打开的文件的个数
int mfdCount = 0;
int ufdIndex = 0;

void Init()
{
int i, j;

freopen("test.txt", "r", stdin);
    
for (i = 0; i < MAX_USER_COUNT; i++)
{
// 读入用户名
scanf("%s", MFD[i].userName);

// 读入该用户名下的文件目录信息
for (j = 0; j < MAX_SAVED_FILE_COUNT; j++)
{
scanf("%s%d", UFD[i].file[j].fileName, &UFD[i].file[j].accessType);
getchar();
}
getchar();
UFD[i].length = MAX_SAVED_FILE_COUNT;

MFD[i].pUFD = &UFD[i];
}
mfdCount = MAX_USER_COUNT;

fclose(stdin);
}

void InitAFD()
{
printf("输入要打开的文件名:\n");
scanf("%s", AFD[afdCount++].fileName);
}

void DisplayUFD(UserFileDirectory *pUFD)
{
int i = 0;

if (pUFD)
{
while (i < pUFD->length)
{
printf("文件名:%s 文件保护码:%d\n", pUFD->file[i].fileName, pUFD->file[i].accessType); 
i++;
}
}
}

void Menu()
{
    printf("\n*******************文件操作类型************************\n");
printf("*                   1、Create文件                     *\n");
printf("*                   2、Delete文件                     *\n");
printf("*                   3、Open文件                       *\n");