作者haosan (K211)
看板C_and_CPP
标题Re: [问题] 老手了却还是不懂scanf
时间Sun Dec 13 22:30:37 2009
※ 引述《bil193 (丁丁)》之铭言:
原文恕删
1.
多亏了b大我才知道scanf还可以这样用
若把17行改成
while((tmp=getchar())!='\n')应该可以达到b大想要的
也就是若输入 989o => 缓冲区: '8' '9' 'o' '\n'
2.
现在把第10行 改成
scanf("99%s",&ch)
再输入 9989o => ch 会被储存 '8' '9' 'o' '\0' 缓冲区: '\n'
但若输入 989o => ch 不被储存 缓冲区: '8' '9' 'o' '\n'
也就是'\0'是在储存字串时建立 而非读入字串时建立
原程式码
#include <iostream>
#include<conio.h>
using namespace std;
int main()
{
int a;
char ch[6],tmp;
memset(&ch,'*',6);
scanf("99%c",&ch);
//while(getche()!='\n');
for(int i=0;i<6;i++)
{
printf("%d:\'%c\'\n",i,ch[i]);
}
cout<<ch<<'\n';
while((tmp=getchar())!='\n')
{
printf("\'%c\'",tmp);
}
scanf("88%c",&ch);
cout<<'\n';
for(int i=0;i<6;i++)
{
printf("%d:\'%c\'\n",i,ch[i]);
}
system("pause");
return 0;
}
==========================================
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.205.27