c語言中將字串打由指定長度的方法

2021-12-25 07:46:30 字數 1936 閱讀 3415

1樓:小夏在深圳

好用的擴充套件就是 scanf() 的「%ms」佔位符。

介於 % 和 s 之間的 m 有 measure(測量)的含義,它可以測量輸入字串的長度,scanf() 根據字串的長度分配記憶體,並將字串拷貝到這段記憶體,之後將首地址返回給 m。在使用完畢後,需要呼叫 free() 函式釋放這段記憶體。

程式源**如下:

#include

int length(char *p);

void main()

int len;

char *str[20];

printf("please input a string:\n");

scanf("%s",str);

len=length(str);

printf("the string has %d characters.",len);

int length(char *p)

int n;

n=0;

while(*p!='\0')

n++;

p++;

return n;

擴充套件資料

1、在c語言程式開發中需要讀取使用者輸入時,即使不能事先獲知輸入長度,也是有辦法寫出高穩定性的程式的。不過在實踐中,一般不推薦使用 scanf() 函式處理使用者輸入,即使我們解決了輸入長度的問題。

2、介於 % 和 s 之間的數字應小於 name 的長度,這個數字表示 scanf() 一次最多讀取 127 位元組的資料放入 name。如果使用者輸入的字串超出了 127 位元組,剩下的字元將留在緩衝區內,等待下一次讀取。

2樓:匿名使用者

如果要按**形式列印一組字串,你就需要將字串列印成指定長度。利用printf()函式可以很方便地實現這一點,請看下例:

# include

char * data[25] = ;

void main (void) ;

void main (void)

}在上例中,字串陣列char *data中包含了某年4個地區的銷售資料。顯然,你會要求按**形式列印這些資料,而不是一個挨一個地毫無格式地列印這些資料。因此,上例中用下述語句來列印這些資料:

printf("%-10.10s",data[x]);

引數"%-10.10s"指示printf()函式按10個字元的長度列印一個字串。在預設情況下,printf()函式按右對齊格式列印字串,但是,在第一個10的前面加上減號(-)後,prinft()函式,就會使字串左對齊。為此,printf()函式會在字串的尾部加入空格,以使其長度達到10個字元。

上例的列印輸出非常整潔,類似於一張**,如下所示:

region --q1-- --q2-- --q3-- --q4--

north 10090.50 12200.10 26653.12 62634.32

south 21662.37 95843.23 23788.23 48279.28

east 23889.38 23789.05 89432.84 29874.48

west 85933.82 74373.23 78457.23 28799.84

3樓:匿名使用者

c語言中使用printf函式的輸出字串格式控制,可以很方便的將字串按設計者要求進行輸出。

格式說明:

printf("%[m][.n]s", str );

中括號,表示可選項,不是格式內容

m   輸出最小寬度,單位位元組,若str長度不足m,前補空格.n   僅輸出字串str的前n位

#include

int main()

執行結果:

1234567890

abcabcde

abcdef

C語言字串問題,C語言中,字串是什麼?

這迴圈需要執行4次,對應的字元就是0001,也就是說這個sc需要5個空間,加一個 0 for i 0 i 2.你這個程式每次執行的結果可能是不確定的,因為你沒有初始化sc陣列,printf以字串的形式輸出,他是遇到 0 字元才結束的,所以為了保證程式的結果是一致的,建議初始化陣列。sc 5 這樣就可...

c語言如何刪除一串字串中指定的字串

include include intmain elseprintf 要刪除字字串未找到 n return0 c語言刪除字串中指定字元 一 問題描述 從鍵盤輸入一個字串給str和一個字元給c,刪除str中的所有字元c並輸出刪除後的字串str。1 輸入 第一行是一個字串 第二行是一個字元。2 輸出 刪...

c語言中關於字元陣列和字串的區別

陣列的長來度是固定的,源我們知道在哪個地方結束。對於c型別的字串,要想知道在那個地方結束的話,我們只需要檢測某個位置的字串是不是 0就行了,也就是說c型別的字串是以 0標記結束的。所以字元陣列和c型別字串的區別就是那個 0。其實從字元陣列和c型別字串的儲存位置上來說也是不同的,這也算是一個區別吧。結...