c語言scanf函數輸入單個字元%c用%s代替

用scanf(%s,
&flag)應該會有內存溢出錯誤。
太久沒弄過c了,幫你頂下吧。

㈡ 如何在C語言中用scanf輸入數組

#include

main()

{

struct

{

intnum;

charname[20];

charsex;

intage;

}stu[5];

inti;

for(i=0;i<5;i++)

{
printf("請輸入信息 ");

scanf("%d",&stu[i].num);

scanf("%s",&stu[i].name);

scanf("%c",&stu[i].sex);//在%c之前加一個空格

scanf("%d",&stu[i].age);

}

for(i=0;i<5;i++)

{

printf("*%s*",stu[i].name);

}

}

拓展資料

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。



㈢ c語言怎麼用scanf輸入字元串

c語言用scanf輸入字元串:
char s[300];
scanf("%s",s);
這個語句只能輸入不包含空格和跳格鍵的字元串並且以回車符結束輸入。

㈣ c語言,scanf 輸入字元串問題

scanf("%s",str2)的實際操作是將str2作為一個指針,按照字元串(%s)來讀取和識別標准輸入的內容,並將讀取到的內容存儲到指針str2所指地址中。

你的str1被賦值為空(null),即為0,所有的系統均不會允許讀寫地址0上的內容,所以報錯。

可以試著申請一個地址並賦值給str1,這樣就能讀寫了,最後記得釋放內存

#include<stdio.h>
#include<stdlib.h>

intmain(intargc,char*argv[])
{
char*str1=(char*)calloc(1,10);
scanf("%s",str1);
printf("%s",str1);
free(str1);
}

㈤ C語言用如何用scanf輸入帶有空格的字元串

要輸入帶空格的字元串,要用到一個格式字元:%[] --> 一個字元集。

「%[]」的作用是掃描字元集合:

例如:scanf(「%[^ ]」,str);

具體作用是:如果輸入的字元屬於方括弧內字元串中某個字元,那麼就提取該字元;如果一經發現不屬於就結束提取。該方法會自動加上一個''到已經提取的字元後面。

#include <stdio.h>

int main()

{

char str[81];

printf("Please input a string: ");

scanf("%[^ ]",&str);

printf("The string is: %s ",str);

return 0;

}

(5)c語言scanf輸入字元擴展閱讀:

字元串函數應用:

1. 連接運算 concat(s1,s2,s3…sn) 相當於s1+s2+s3+…+sn。

例:concat(『11』,'aa』)='11aa』。

2. 求子串。 Copy(s,I,I) 從字元串s中截取第I個字元開始後的長度為l的子串。

例:(『abdag』,2,3)=』bda』。

3. 刪除子串。過程 Delete(s,I,l) 從字元串s中刪除第I個字元開始後的長度為l的子串。

例:s:=』abcde』;delete(s,2,3);結果s:=』ae』。

4. 插入子串。 過程Insert(s1,s2,I) 把s1插入到s2的第I個位置。

例:s:=abc;insert(『12』,s,2);結果s:=』a12bc』。

5. 求字元串長度 length(s) 例:length(『12abc』)=5。

在ASP中 求字元串長度用 len(s)例: len("abc12")=5。

網路-掃描集

㈥ c語言關於字元串用scanf輸入的問題

如果第一個是輸入%s 第二個輸入一個%c
那麼由於 回車'鍵'在Windows系統中用"\n\r"兩個字元表示,專所以由於scanf讀入的問題只接受一屬個以字元就會多餘一個,而這個多餘的就會被下一個輸入字元所接受,所以才未輸入就結束了。
這是在兩個輸入之間加入getchar()即可接受這個多餘的字元。或者把輸入字元串改為gets(str)。

㈦ C語言怎麼用scanf輸入字元串。

你的意思是輸入多餘的字元吧?
1、因為你用scanf輸入的字元都是輸入到緩沖區中的,例如你定義了一個只接受一個字元的變數ch,但卻輸入了多餘的字元,這種情況會給編譯器造成困擾,因為他並不完全智能,通常採用這種方法釋放掉緩沖區內多餘的字元輸入;例如:
2、char ch;
scanf("%c", &ch);//假如你不小心輸入了多個字元
//解決方法如下
while (『\n』 != getchar())
{continue;}//這里的原理一不斷的用getchar讀取緩沖區內的字元,並將其廢棄掉,直到遇到你輸入的回車符(當然也可以是別的輸入結束符);

㈧ C語言scanf,輸入字元

你把scanf("%c\n",&c1)里的「\n」去掉就可以了。換行是根在printf里才可內以執容行的。scanf用於存儲,

#include "stdio.h"
void main()
{
char c1,c2;
scanf("%c",&c1);
printf("%c,%d\n",c1,c1);
c2=c1+32;
printf("%c,%d\n",c2,c2);
}

㈨ C語言,scanf 輸入字元問題

屏幕上輸入的字元,會暫存到緩存。不信,你可以一直按著鍵盤,不多會,你就會聽到系統發出嘟嘟的報警聲,說明緩沖區已經滿了。
scanf()函數只是從當前緩沖區取一個相應的字元;其中緩沖區的最後一個字元為'\n';
按你說的,可以用循環,接收字元同樣可以用getchar()函數。
char ch;
while(1){
scanf("%c",&ch);
if(ch=='\n') break; /* 當輸入回車時,結束 */
/* 對ch做相應處理 */
}

㈩ C語言中用scanf函數輸入字元時,為什麼要在輸入控制符%c前面加空格用scanf還有哪些要注意

空格確實不是必須的,但有了空格就可以忽略你輸入的空格。

例如:scanf(" %c" ,&c),你輸入了' a'(a前面有個空格),a就能被c接受。

但控制符前如果沒空格,那c就接受了空格,這個可以防止誤操作,忽略空格輸入,接受第一個非空格輸入。

注意事項:

對於scanf()而言,%c是個較為特殊的說明符。 %c前沒空格,scanf()將讀取標准輸入流中的第一個字元,%c前有空格,scanf()則讀取標准輸入流中第一個非空白字元,屏蔽了空白字元。


(10)c語言scanf輸入字元擴展閱讀:

scanf

C語言中常用的標准輸入輸出函數,它的常規用法是scanf(「輸入格式」,輸入地址),scanf從輸入緩沖區取入數據按照指定的「輸入格式」存儲到指定的「輸入地址」。

但是有一類問題通常令人頭疼,那就是字元串的讀入,此處僅僅討論使用scanf讀取字元串的一些問題。理論上你只需要定義一個字元指針,然後scanf每次讀入字元存儲到該指針所指的存儲空間,之後指針值自動加1。