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型別字串的儲存位置上來說也是不同的,這也算是一個區別吧。結...