c语言-C语言中scanf函数问题

问题描述

C语言中scanf函数问题
 #include<stdio.h>
   int main()
   {
    char a1[5],a2[5],a3[5],a4[5];
    scanf("%s",a1);
    printf("END1");
    scanf("%s",a2);
    printf("END2");
    scanf("%s",a3);
    printf("END3");
    scanf("%s",a4);
    printf("END4");
    puts(a1);puts(a3);puts(a4); 

   } 


aa bb回车
END1END2cc dd回车

问:为什么在我输入完aa bb回车才出现END1? 不是应该输入aa,在输入完空格(执行完 scanf("%s",a1);)就接着执行printf("END1");输出END1吗?跳过输出END1先执行scanf("%s",a2); ??

解决方案

楼主是想你输入完aa+空格以后系统能自动识别,并且紧跟着输入END1?
操作系统有自已的键盘缓冲区,每输入一个字符就放系统键盘缓冲区中,当输入回车时,系统停止调用字符输入功能,串输入操作结束。
(此时才进入输入缓冲区)

解决方案二:

如楼上所说,要按回车才算scanf结束

解决方案三:

不建议你用scanf

时间: 2024-09-05 23:57:56

c语言-C语言中scanf函数问题的相关文章

详解C语言中scanf函数使用的一些注意点_C 语言

 (一)基本介绍 Scanf是系统自带的函数,声明包含在stdio.h文件中,因此要是有该函数,必须加载#include<stdio.h>头文件.当执行到scanf函数时,程序就暂停等待用户输入,该函数只接受变量的地址,格式为&变量名.是一个阻塞式的函数,2用户输入完毕后,则将值赋值给变量,至此函数调用完毕.敲回车键告知计算机键入完毕. (二)使用注意 ①. 使用scanf函数输入一个字符变量.Char a; scanf("%c",&a); ②. 同时输入多

c语言-C语言中Free函数释放内存为何释放不了!!!!!!!

问题描述 C语言中Free函数释放内存为何释放不了!!!!!!! #include #include void testFree(char *par) { void*free(par); par = NULL; } int _tmain(int argc, _TCHAR* argv[]) { char path[10] = {"abc"}; char *str = (char *) malloc(100 *sizeof(char)); memset(str,0x00,100 *size

c语言-C语言中select函数 应用于网络存储中配合fread/fwrite是否存在阻塞问题

问题描述 C语言中select函数 应用于网络存储中配合fread/fwrite是否存在阻塞问题 利用fread fwrite 读写网络存储上的文件时,是否会出现阻塞问题? 我的感觉是会出现但是无法通过select判断,因为select判断的是内容是否存在,就是文件是否存在,而对于文件fread fwrite没有发现文件也会报错 但是一旦文件存在开始读写以后发生了网络传输中断引起阻塞 那么还是会挂住 而所谓的非阻塞机制无法发挥作用 不知道我的理解是否正确? 谢谢大家发表看法. 解决方案 阻塞和非

C语言中scanf函数格式化错误输入问题

函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息.可以读入任何固有类型的数据并自动把数值变换成适当的机内格式. 其调用格式为:      scanf("<格式化字符串>",<地址表>); scanf()函数返回成功赋值的数据项数,出错时则返回EOF. 其控制串由三类字符构成: 1.格式化说明

简述C语言中system()函数与vfork()函数的使用方法_C 语言

C语言system()函数:执行shell命令头文件: #include <stdlib.h> 定义函数: int system(const char * string); 函数说明:system()会调用fork()产生子进程, 由子进程来调用/bin/sh-c string 来执行参数string 字符串所代表的命令, 此命令执行完后随即返回原调用的进程. 在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT 和SIGQUIT 信号则会被忽略. 返回值: 1.如果 sy

详解C语言中rand函数的使用_C 语言

前言 我们在编程实现算法的过程中,往往需要使用到随机数.由于计算机是一台以逻辑为基础的机器,没法做到真正的随机(大概量子计算机可以?).所以计算机生成的是伪随机数,供我们使用. 我们使用C语言的rand函数,生成的也是伪随机数. c语言之rand函数的使用 1.写入头文件 #include <stdlib.h> #include <stdio.h> #include <time.h> 2.变量的定义 void main( void ) { int i,k; 3.sran

C语言中qsort函数用法实例小结_C 语言

本文实例汇总了C语言中qsort函数的常见用法,非常具有实用价值.分享给大家供大家参考.具体分析如下: C语言中的qsort函数包含在<stdlib.h>的头文件里,本文中排序都是采用的从小到大排序. 一.对int类型数组排序 int num[100]; int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; } qsort(num,100,sizeof(num[0]),cmp); 二.对char类型数

循环问题-C语言中if函数中的问题

问题描述 C语言中if函数中的问题 #includeint main(){ int num[2][6]={{000000}{000000}}; int i=0j=0mnpz; printf(""Please type 1 for first classPlease type 2 for economy ""); { for(p=1;p<=10;p++) { scanf(""%d""&z); if(z==1&

c语言中scanf()读取值的问题

问题描述 c语言中scanf()读取值的问题 int get_int(void) { int input; char ch; while (scanf("%d", &input) != 1) { while ((ch=getchar()) != ' ') putchar(ch); printf("is not an interger. Please enter an"); printf("interger value,such as 25,-178