程序通常是交互式的,要求用户输入。
要从用户检索一行文本或其他字符串,C提供scanf()、gets()和fgets()函数。
可以使用scanf()根据格式说明符读取输入。
例如:
char name[25]; int age; printf("输入您的名字和年龄: \n"); scanf("%s %d", name, &age);
当scanf()用于读取字符串时,不需要访问变量地址,因为数组名充当指针。
scanf()到达空格时停止读取输入。要读取带空格的字符串,请使用gets()函数。它读取输入,直到到达终止的换行符(按下回车键)。
例如:
char name[50]; printf("输入您的名字: "); gets(name);
get()的另一个更安全的替代方法是fgets(),它可以读取指定数量的字符。这种方法有助于防止缓冲区溢出,当字符串数组对于键入的文本不够大时会发生这种溢出。
例如:
char name[50]; printf("输入您的名字: "); fgets(name, 50, stdin);
fgets()参数是字符串名称、要读取的字符数以及指向要从中读取字符串的指针。stdin的意思是从标准输入(即键盘)中读取数据。
get和fgets之间的另一个区别是,换行符由fgets存储。
fgets()只从stdin读取n-1个字符,因为必须有空间容纳“\0”。