當前位置:首頁 » 編程語言 » c語言讀取空格的字元串

c語言讀取空格的字元串

發布時間: 2023-03-20 11:59:12

A. c語言讀取文件內容時怎樣讀取帶空格的字元串

fscanf就行了,可以自己指定什麼作為字元串的結束標志

B. C語言空白字元讀取問題

當我們讀取字元或者字元串時,有時會遇到煩人的空白字元問題。因為結果很奇怪,為什麼明明程序看起來沒有錯,但是結果讀取到的值卻是空的呢?下面我們來仔細分析一下。

在一個程序中連續讀取多個變數時,如果最後一個是字元類型( char )的話,那麼你一定要注意。

scanf() 傾向於遺留下它「掃視」過但未讀取的字元(包括換行符和陸嘩)。比如下面的程序:

在讀入i的同時,scanf函數調用將會留下沒有消耗掉的任意字元,包括(但不限於)換行符。 getchar() 或者 scanf("%c", ...) 將在隨後取回第一個剩餘字元,但這不是我們所希望的結果。

上述問題的解決方法之一就是可以在讀取字元之前,先確保前面沒有換行符。

上面的方法只是針對換行符,但是如果是其他空白字元的話,就有些麻煩了。在C標准庫中有一個函數可以用來檢測空悉襪白字元,我們需要包含頭文件 ctype.h 。

假如我們要讀取一行字元串,很多人都會採取類似於下面的方法:

NOTE: 注意這里 ch 以及前面的 command 變數都為 int 類型,原因是 getchar() 函數實際上返回的是 int 類型,之所以這樣設計是為了適應 EOF 這個特殊值。當這些函數讀取出錯或者讀完文件後,會返回 EOF 。 EOF 是一個宏,標准規定它的值必須是一個 int 型的負數常量。

上述方法看似沒有任何問題,而且確實是沒有問題。但是在某些情況下,上面的函數就會出現問題。假如在讀入字元串之前,我先讀入了某個變數並按下回車符或者其他空白字元,這時使用上面方法將什麼也讀不到或者讀到的喚行值開頭將是空白字元。

原因很簡單, read_line() 函數中 while 循環結束的條件是讀到換行符,如果前一次讀取遺留下某些空白字元就會影響到後面的 read_line() 讀取。

解決的方法很簡單,下面是新的 read_line() 函數:

我們同樣使用了問題一中的 isspace() 函數。表達式 isspace(ch = getchar()) 控制第一個字元,把讀入的字元存儲在 ch 中,然後使用 isspace() 函數判斷 ch 是否是空白字元。如果不是,循環終止, ch 中包含一個非空白字元。

C. c語言中如何用scanf讀取一個帶有空格的string

連續批量賦值可以用memset
char
a[20];
memset(a[2],'a',5);//對數組a第3個元素開始的連續5個元素統一賦值為字元'a'
如果每個需要賦值的元素都不同,就只能一個個賦值了。

D. 怎樣讀取一個帶空格的字元串到二維數組中 C語言

#include <孫櫻隱頌局stdio.h>
int main()
{
char a[] ="abc dsa";
char b[10][10] = {};
int pos1 = 0, pos2 = 0, pos3;
char *p = a;
while(*p)
{
while(*p !=' ' && *p != '\0')
{

b[pos1][pos2 ++] = *p ++;
} 還有則廳一部分,需要的話繼續追問

E. C語言輸入帶空格的字元串的處理

用 scanf("%s",array); 的話遇到空格就停止接收後面的字元了
以下是處理這螞灶粗種情況的一些方法(記錄下來以免以後遇到相似的問題):

: %[abc] 表示字元組合包括 a、b和c ,如果遇到這三個字元之外的字元,則停止接收。 %[^abc] 代表字元組悶鎮合為 abc 以外的所有字元,至於橫杠是否用於指定某個范圍的字元 %[a-z] ,則辯咐因編譯器而異。

F. C語言如何從文件讀入一個帶空格的字元串不知道具體長度,以回車終止

用fgets就可以了
原型是char
*fgets(char
*s,
int
n,
FILE
*stream);
從流中讀取n-1個字元,除非讀完一行,參數s是來接收字元串,如果成功則返回s的指針,否則返回NULL
char
t[100];
fp=fopen("file","r");
fgets(t,81,fp);
//從fp文件中讀入80個字元,如果遇到回車或不足80個,就結束讀取.

G. c語言如何提取字元串的空格符

for (i=0;i〈len(a))if (a[i]==' ') break;
if (i==len(a))
printf("字元串a中沒有空格\n");
else printf("字元串a中第%d個字元是空格\n",i十1);

H. c語言中怎樣用scanf()讀入帶空格的字元串

現在gcc中gets()不讓用了,可以使用
char str[100];
fgets(str,100,stdin);//stdin鍵盤輸入
fputs(str,stdout);//輸出

或者:
char str[100];
scanf("%[^\n]",str);//遇到\n換行符停止
printf("%s\n",str);輸出

I. c語言中如何用scanf讀取一個帶有空格的string

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

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

例如: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;

}

(9)c語言讀取空格的字元串擴展閱讀:

字元串函數隱野應用:

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。

網路-掃描集

J. c語言如何讀入串頭為空格的字元串 如: 123

gets函數會自動去行顫搭除前導空格的。
試試這段代碼。

#include <stdio.h>
#define N 20
int read_line(char [],int n);

int main()
{
char str[N];

printf("請檔拿輸入字元串:");
read_line(str,N);

printf("%s,",str);

system("pause"洞嘩);
}

int read_line( char str[], int n)
{
int ch,i=0;
while((ch=getchar())!='\n')
if(i<n)
str[i++]=ch;
str[i]='\0';
return i;
}

熱點內容
燕山大學編譯原理期末考試題 發布:2024-11-05 20:13:54 瀏覽:523
華為電腦出現臨時伺服器 發布:2024-11-05 20:05:08 瀏覽:405
斗戰神免費挖礦腳本 發布:2024-11-05 19:53:25 瀏覽:662
網吧伺服器分別是什麼 發布:2024-11-05 19:45:32 瀏覽:389
忍3無傷腳本 發布:2024-11-05 19:11:40 瀏覽:303
江蘇雲伺服器散熱器定製 發布:2024-11-05 18:50:15 瀏覽:721
投資分紅網站源碼 發布:2024-11-05 18:36:38 瀏覽:506
我的世界推薦適合萌新的伺服器 發布:2024-11-05 18:30:03 瀏覽:581
c語言考級 發布:2024-11-05 18:16:54 瀏覽:506
易語言不能編譯安卓app嗎 發布:2024-11-05 18:14:11 瀏覽:838