c語言輸入問題
『壹』 c語言輸入格式問題
scanf里,雙引號下面是什麼樣子的,輸入的時候就必須原封原樣地輸入。
所以,不必要的情況下,一般不在格式符之間添加多餘的空格啊、逗號啊之類的。
如果添加了的話,輸入的時候就必須要對應輸入進去才行。
i=scanf("%d%d,%d",&x,&y,&z);
上面這句語句里的scanf的雙引號下面的格式控制符的意思是「一個整型、一個整型、一個逗號、一個整型」,所以輸入的時候也要按「一個整型、一個整型、一個逗號、一個整型」的樣式輸入。當然了,第一個整型和第二個整型之間要麼用空格,要麼用回車來分隔,這是scanf默認的分隔數字的方式。
如有幫助,煩請點採納,謝謝!
『貳』 c語言的字元輸入問題
#include<stdio.h>
main()
{
char
c;
scanf("%c",&c);//輸入abc並按回車後,字元變數c存的是『a』,bc回車符存在緩沖區
while(c!='+'&&c!='-'&&c!='*'&&c!='/')
{
printf("agin\n"),
scanf("%c",&c);
}
/*因為字元變數c的值為『a』,所以執行第一次循環,輸出agin
並輸入,由於緩沖區有字元
所以直接向緩沖區取一個字元,是'b'這個字元,所以此時,字元變數c為'b',再次執行第二次循環,同理,字元變數c從緩沖區取字元c,執行第三次循環
再從緩沖區取回車符,執行第四次循環,注意輸出四個agin後,再次執行scanf("%c",&c)
,不知道你發現了沒有,程序並沒有結束,會有一個游標閃動,沒有出現press
any
……,就是這個原因*/
}
//說明:scanf()可以接收回車符
//不信的話你可以在你的循環體里加一語句:printf("%c\n",c);
//希望能夠幫助到你
『叄』 一個C語言字元串輸入問題
int
main()
{
char
s[50],s1[50],*s2;
gets(s);
s2=gets(s1);
printf("%s\n",s);
printf("%s\n",s1);
printf("%s\n",s2);
short
i;
cin>>i;
return
0;
}
s1和s2是一樣的
getc的原型
int
getc(
FILE
*stream
);
它是從
文件流
裡面獲取並返回下一個字元,如果到達文件尾返回EOF與fgetc是一致的
getchar
的原型
int
getchar(
void
);
從標准輸入獲取並返回下一個字元,如果到達末尾返回EOF
gets的原型
char
*gets(
char
*str
);
gets()函數從標准輸入讀取字元並把它們載入到str(字元串)里,直到遇到新行(\n)或到達EOF.
gets()的
返回值
是讀入的字元串,如果錯誤返回NULL.
『肆』 c語言的輸入輸出問題
1:字元輸入輸出是%c,不是%ch
2:輸入整型後輸入字元,需要刷新下緩沖區或者過濾一個回車。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
structteacher
{
intnum;
charname[100];
charsex;
};
intmain(void)
{
structteacher*p=(structteacher*)malloc(sizeof(structteacher));
printf("teacher'sname:");
scanf("%s",p->name);
printf("teacher'snumber:");
scanf("%d",&p->num);
getchar();//過來回車
printf("teacher'ssex:");
scanf("%c",&p->sex);//%c
printf("teacher'snumber:%d ",p->num);
printf("teacher'sname:%s ",p->name);
printf("teacher'ssex:%c ",p->sex);//%c
return0;
}
『伍』 C語言的一個輸入語句問題
解釋:
1、在用「%c」格式輸入字元時,空格字元和「轉義字元」都作為有效字元輸入:
scanf("%c%c%c",&c1,&c2,&c3);
如輸入a
b
c
字元『a』送給c1,字元『
』送給c2,字元『b』送給c3,因為%c只要求讀入一個字元,後面不需要用空格作為兩個字元的間隔,因此『
』作為下一個字元送給c2。
2、當你的);②scanf
("%d
%d",&a,&b);
scanf
(
"
%c
%c",&c,&d);第二個語句「後有個空格"時系統默認你輸入的兩個數據之間存在空格字元或者轉義字元。
其實是很簡單的一個問題。
『陸』 為什麼C語言程序輸入不了內容,有什麼錯誤
二維字元串數組a[n][m],其中a[n]的是行指針,表示的一行數據。
所以在你圖中代碼char c[5][20];c[i]就表示一行字元串的首地址。
同理s數組也是。
所以當輸入c和s數組,用c[i],s[i]做參數,不要加&,直接寫scanf("%s%s",c[i],s[i])就可以了。
而a是不是字元數組,%f不能直接對應一行,而要對應其中一個元素,所以要寫&a[i][j]。
而你的循環條件也不對,你那樣寫,字元數組,浮點數組循環輸入次數是不一樣的,要分開循環。
另外scanf輸入默認是空格分隔,所以字元串和字元串之間要有空格,每個數字之間也要空格。像這樣輸入:
#include <stdio.h>
int main()
{
int i,j;
char c[5][20];
char s[5][20];
float a[11][6];
printf("please input: ");
for(i=0;i<5;i++)
scanf("%s%s",c[i],s[i]);
for(i=0;i<11;i++)
for(j=0;j<6;j++)
scanf("%f",&a[i][j]);
printf(" 輸出列印: ");
printf("c數組內容: ");
for(i=0;i<5;i++)
printf("%s ",c[i]);
printf("s數組內容: ");
for(i=0;i<5;i++)
printf("%s ",s[i]);
printf("a數組內容: ");
for(i=0;i<11;i++,printf(" "))
for(j=0;j<6;j++)
printf("%f",a[i][j]);
return 0;
}
『柒』 c語言 輸入輸出問題
緩沖區里數據沒清空
#include<stdio.h>
void
main()
{
putchar(getchar());
fflush(stdin);
putchar(getchar());
fflush(stdin);
putchar(getchar());
putchar('\n');
}
這樣就對了,每次輸入後強制清空標准輸入流
『捌』 C語言輸入問題
最好用一個scanf();把所有要輸的東西都放進去,因為scanf 是你" "裡面 什麼樣的格式,你在輸入的時候必須按照那樣的格式
例如:
scanf("%d,%d",&a,&b);那麼在輸入時就要輸a,b 如果是scanf("%d %d",&a,&b);就要這樣輸:a b
多個scanf 連在一起 我還沒用過。所以建議 一個scanf把你要連在一起輸的數據 都輸進去;程序中輸入的時候a= 這些都不必要 可以把程序改了:
scanf("%d %c %ld %f %lf",&a,&b,&c,&d,&e);輸入的時候:a b c d e
這樣就好了
輸出也錯了 只需要:printf("a=%d b=%c c=%ld d=%f e=%lf",a,b,c,d,e);以此類推 不需要帶上&符號 否則是錯誤的
『玖』 c語言,輸入問題
以上代碼的輸入問題就在scanf("%d\n",p);這句,這里多了個\n,強制要求多輸入一個回車,應該改為:
scanf("%d",p);
『拾』 C語言 字元輸入問題
假如你輸入abc實際上是a\nb\nc\n
6個字元了。
#include
<stdio.h>
#include
<stdlib.h>
int
main()
{
char
c;
int
i,n;
scanf("%d",&n);
for
(i=1;i<=n;i++){
scanf("%c",&c);
getchar();
//截取'\n'
}
}