在c語言程式設計中,有時候需要生成任意長度的字串以供使用。文章給出任意長度字串(包含字母和數字)生成的簡單程式。
char *randstr(char *pointer, int n)
*pointer = '\0'; //字串結束符
return (pointer - n); //返回指向隨機字串的指標首位址
}
rand()為雖然為隨機數生成函式,但由於每次執行前未設定隨機數種子,所以生成的隨機數實際為偽隨機數-每次相同,為了生成真正的隨機數,我們採用srand()函式來設定隨機數種子,通常以時間作為隨機數種子。
char *randstr(char *pointer, int n)
*pointer = '\0';
return (pointer - n);
}
rand()和srand()函式需要新增標頭檔案stdlib.h,time()函式需要新增標頭檔案time.h,usleep()函式需要新增標頭檔案unistd.h
#include
#include //rand(),srand()
#include //time()
#include //sleep()
//隨機字串生成函式宣告
char *randstr(char *pointer, int n);
int main()
char *randstr(char *pointer, int n)
*pointer = '\0';
return (pointer - n);
}
有時候我們需要生成任意長度的字串並給到陣列,用指標操作不是很直接,可以使用陣列來實現
char *randstr(char
str, int n)
str[n] = '\0';
return
str; //這個時候直接返回陣列首位址
}
#include
#include //rand(),srand()
#include //time()
#include //sleep()
//隨機字串生成函式宣告
char *randstr(char str, int n);
int main()
char *randstr(char str, int n)
str[n] = '\0'; //字串結束符
return str;
}
用陣列操作時,陣列作為實參傳入函式。看到很多地方說:陣列作為實參傳入函式退化為指標?但是在本程式示例中在函式內對陣列進行直接賦值並沒有什麼問題,所以暫時還不是很理解為什麼說退化為了指標。
acknowledgements:
2017.06.02
任意長度的字串輸入
任意長度的字串輸入 最近頻頻有朋友問我,用c語言怎樣才能實現任意長度的字串輸入?同時他們也談了很多自己的思路,有的建議定義乙個大型陣列,有的建議用鍊錶來實現等等,後來都被一一否定了。陣列再大空間還是乙個固定值,不能實現動態增長,事先定義不是太大了浪費記憶體,就是字串過長了導致溢位 而鍊錶的增加 查詢...
C語言字串長度
c語言字串長度的計算是程式設計時常用到的,也是求職時必考的一項。c語言本身不限制字串的長度,因而程式必須掃瞄完整個字串後才能確定字串的長度。在程式裡,一般會用strlen 函式或sizeof來獲取乙個字串的長度,但這2種方法獲取的字串的長度其實是不一樣,我們用如下函式進行測試 cpp view pl...
C語言求字串長度
有兩種方法 第一種 非遞迴 思想很簡單就是呼叫庫函式中的strlen 函式即可 如下所示 include includeint main 第二種 遞迴 思想就是大問題化成小問題,求字串長度莫非就是字串中的字母個數相加,例如hello就是5個字母即它的字串長度就是5。遞迴滿足的兩個條件是 1.自己呼叫...