在輸入字符或直到按回車鍵或緩衝區已滿(以先發生者爲準)時,如何填充80個字符的緩衝區。C - 在輸入字符時從stdin讀取
我已經研究過很多不同的方式,但進入已被按下,然後輸入字符*得到80切斷..
感謝。
在輸入字符或直到按回車鍵或緩衝區已滿(以先發生者爲準)時,如何填充80個字符的緩衝區。C - 在輸入字符時從stdin讀取
我已經研究過很多不同的方式,但進入已被按下,然後輸入字符*得到80切斷..
感謝。
#include<stdio.h>
...
int count=0;
char buffer[81];
int ch=getchar();
while(count<80&&ch!='\n'&&ch!='\r'&&ch!=EOF){
buffer[count]=ch;
count=count+1;
ch=getchar();
}
buffer[count]='\0';
一旦你有buffer
作爲一個字符串,請確保你消化輸入行的其餘部分,以獲得輸入流準備下次使用。
scanf("%*[^\n]"); /* Skip to the End of the Line */
scanf("%*1[\n]"); /* Skip One Newline */
#include <stdio>
...
char buf[80];
int i;
for (i = 0; i < sizeof(buf) - 1; i++)
{
int c = getchar();
if ((c == '\n') || (c == EOF))
{
buf[i] = '\0';
break;
}
buf[i] = c;
}
buf[sizeof(buf] - 1] = '\0';
如果你真的想要的人物「因爲他們都進入了」,你不能用C IO:
這可以通過下面的代碼(從this document的scanf
剖面中)來完成。你必須這樣做unix的方式。 (或windows方式)
#include <stdio.h>
#include <unistd.h>
#include <termios.h>
int main() {
char r[81];
int i;
struct termios old,new;
char c;
tcgetattr(0,&old);
new = old;
new.c_lflag&=~ICANON;
tcsetattr(0,TCSANOW,&new);
i = 0;
while (read(0,&c,1) && c!='\n' && i < 80) r[i++] = c;
r[i] = 0;
tcsetattr(0,TCSANOW,&old);
printf("Entered <%s>\n",r);
return 0;
}
謝謝,我會看到這是如何工作的.. – user884685 2012-04-08 23:57:33
看着詛咒,或者ioctl – Dave 2012-04-04 04:24:27
會做謝謝。 – user884685 2012-04-04 04:26:04
如何找到ioctl的頭文件 – user884685 2012-04-04 04:46:34