c语言怎么输入任意长度的一个数组 c语言如何输入任意长度的字符串数组

c\u8bed\u8a00\u5982\u4f55\u8f93\u5165\u4efb\u610f\u957f\u5ea6\u7684\u5b57\u7b26\u4e32\u6570\u7ec4

\u201c\u4efb\u610f\u957f\u5ea6\u201d\u5b9e\u9645\u4e0a\u662f\u505a\u4e0d\u5230\u7684\uff0c\u5373\u4f7f\u6240\u7528\u7684\u8f6f\u4ef6\u5e73\u53f0\u6ca1\u6709\u9650\u5236\uff0c\u786c\u4ef6\u73af\u5883\u4e5f\u4e0d\u5141\u8bb8\u3002\u6240\u4ee5\u201c\u4efb\u610f\u957f\u5ea6\u201d\u5e94\u5f53\u7406\u89e3\u4e3a\u5728\u4e00\u4e2a\u5f88\u5927\u7684\u7a7a\u95f4\u4e4b\u5185\u6ca1\u6709\u9650\u5236\u5730\u8f93\u5165\u5b57\u7b26\u4e32\u800c\u4e0d\u7528\u4e8b\u5148\u786e\u5b9a\u957f\u5ea6\u3002\u9274\u4e8e\u8fd9\u79cd\u7406\u89e3\uff0c\u53ef\u4ee5\u5b9a\u4e49\u4e00\u4e2a\u8f93\u5165\u51fd\u6570\uff0c\u5148\u52a8\u6001\u7533\u8bf7\u4e00\u4e2a\u8f83\u5927\u7684\u7a7a\u95f4\uff0c\u76f4\u63a5\u5411\u5176\u5185\u8f93\u5165\u5b57\u7b26\u4e32\uff1b\u8f93\u5165\u5b8c\u6bd5\u540e\u68c0\u6d4b\u5176\u957f\u5ea6\uff0c\u518d\u6309\u5b9e\u9645\u9700\u8981\u7533\u8bf7\u4e00\u4e2a\u5408\u9002\u5927\u5c0f\u7684\u7a7a\u95f4\uff0c\u628a\u521a\u624d\u8f93\u5165\u7684\u5b57\u7b26\u4e32\u62f7\u8d1d\u5230\u8fd9\u4e2a\u5408\u9002\u5927\u5c0f\u7684\u7a7a\u95f4\u91cc\uff0c\u518d\u628a\u539f\u5148\u7533\u8bf7\u7684\u5927\u7a7a\u95f4\u91ca\u653e\u3002\u4e3e\u4f8b\u4ee3\u7801\u5982\u4e0b\uff1a
//#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"#include "string.h"#include "stdlib.h"#define N 131071char *Any_Long_Str(char *p){ char *pt; if((pt=(char *)malloc(N))==NULL){//Apply for a larger space for temporary use printf("Apply for temporary use of space to fail...\n"); exit(0); } gets(pt);//Get a string from the keyboard if((p=(char *)malloc(strlen(pt)+1))==NULL){//Apply for a suitable size of space printf("Application memory failure...\n"); exit(0); } strcpy(p,pt);//Copy the string pt to p free(pt);//Release the temporary use of space return p;}int main(void){ char *pstr=NULL; printf("Input a string:\n"); pstr=Any_Long_Str(pstr); printf("%s\n",pstr);//Look at... free(pstr);//Release the space return 0;}

\u4ee5\u4e0b\u662f\u6211\u7684\u601d\u8def\uff0c\u4ec5\u4f9b\u697c\u4e3b\u53c2\u8003\uff1a
\u904d\u5386\u6570\u7ec4\uff0c\u7edf\u8ba1'\n'\u7684\u6b21\u6570\uff0c\u4ece\u800c\u4e3a\u6307\u5411\u5b57\u7b26\u4e32\u7684\u6307\u9488\u6570\u7ec4\u5206\u914d\u5185\u5b58\u3002
\u7136\u540e\u904d\u5386\u6570\u7ec4,\u8ba1\u7b97\u5f53\u524d\u5b50\u5b57\u7b26\u4e32\u7684\u5b57\u7b26\u6570\uff0c\u7136\u540e\u5206\u914d\u5185\u5b58\uff0ccopy\u3002

首先 严格来说 不可能出现任意长度。 内存是有限的 超出一定长度后,不可能存的下,虽然这个值可能是超级大的,但总有限度。

其次,所谓的任意长度,其实就是可变长数组。
那么,在事先不知道数组规模下,就要靠输入,来确定数组大小了。
重点在于,要开辟多大的数组来存

一般有这么几种情况
1 直接开一个足够大的。 比如 虽然不知道有多大,但最大不超过1000个,那就可以直接开个1000元素的数组。
2 动态分配, 使用malloc动态分配内存。
当出现可能的不够情况,用realloc重新分配。

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i=0,n=1;
    int *a;
    a=malloc(n*sizeof(int));
    do
    {
        scanf("%d",&a[i++]);
        realloc(a,++n*sizeof(int));
    }while(getchar(a[i-1])!='
');
    for (i=0;i<n-1;i++)
        printf("%d ",a[i]);
    printf("
");
}


办法不少,正宗的是用链表。

  • C璇█涓杈撳嚭浠绘剰闀垮害鐨瀛楃涓
    绛旓細妤间富锛屽浜c璇█鏉ヨ鏄В鍐充笉浜嗙殑銆傚洜涓猴紝c璇█鍦ㄥ0鏄庡瓧绗︽暟缁勭殑鏃跺欑郴缁熻瀵瑰叾鍒嗛厤绌洪棿銆傚鏋滀綘涓嶅0鏄庢暟缁勫ぇ灏忥紝褰撶劧浼氭姤閿欍傝屽湪鏇撮珮绾т竴浜涚殑璇█锛屽c++鍜宑#閮芥湁鍔ㄦ佹暟缁勬绫荤殑鍔熻兘锛屽彲浠ュ畬缇庣殑甯姪浣犺В鍐抽棶棰樸傝繖涔熸槸涓轰粈涔堢洰褰曞緢灏戠敤c璇█缂栧啓绋嬪簭鐨勫師鍥犮
  • c璇█ 褰涓涓暟浣嶆暟瓒呰繃11浣 鎬庝箞杈撳叆杈撳嚭
    绛旓細c璇█涓鍥犳暟鎹殑瀛樺偍鏍煎紡闄愬埗锛屼笉鍚岀被鍨嬬殑鏁版嵁鎵鑳界簿纭〃绀虹殑鏁版嵁锛堟暣鏁帮級浣嶆暟鏄湁闄愬害鐨勶紝濡傦細int 鍗4瀛楄妭锛屾湁绗﹀彿鏈澶ф暟涓猴細2^31-1 = 2147483647 鏈夋晥鏁版嵁浣嶆渶澶т负10浣嶃 杈撳叆杈撳嚭鏍煎紡涓蹭负%d long 鍦64浣嶇紪璇戠郴缁熶笅锛屽崰8瀛楄妭锛屾湁绗﹀彿鏈澶ф暟涓猴細2^63-1=9223372036854775807 锛堝彈鏈哄櫒鍜屽紑鍙戝伐...
  • c璇█涓庝箞瀹炵幇浠绘剰闀垮害瀛楃涓杈撳叆
    绛旓細鍏跺疄鏍稿績灏辨槸瀹炵幇鍔ㄦ佹暟缁勶紝鏃犺瀛楃涓插闀匡紝閮借兘澶熷偍瀛樸傜敤getchar涓涓竴涓寰楀埌瀛楃锛岀洿鍒版枃浠剁粨鏉熴傛牳蹇冧唬鐮佸疄鐜帮細int n=0,k=100; //鍒濆鍖栵紝瀛楃涓闀垮害涓0锛屽瓧绗︿覆绌洪棿闀垮害涓100 char * s2 = NULL,s1 = (char *)malloc(100); //鍒濆鍖栧瓧绗︿覆绌洪棿 if (s1 == NULL) retu...
  • 缂栧啓涓涓猚绋嬪簭,浠庨敭鐩杈撳叆浠绘剰涓涓浜斾綅鏁,鎶婅繖涓暟鍊煎垎瑙d负鍗曚釜鏁板瓧,鐒 ...
    绛旓細浣犲ソ锛侊紒绋嬪簭鍐欎簡涓涓锛屽彲浠杈撳叆浠绘剰闀垮害鐨勬暟瀛锛岀劧鍚庡垎鍓插悗涓笁涓┖鏍兼樉绀猴細include <stdio.h> int main(){long int x; int i=0;int ii=0;int shu[20]={0};scanf("%ld",&x);for(;;){shu[i] = x % 10;x = x / 10;i++;if( x < 10){shu[i]=x;break;} }for(;i>...
  • C璇█:缂栧啓绋嬪簭浠庨敭鐩杈撳叆涓嶅畾鏁伴噺鐨勬鏁存暟?
    绛旓細鏂规硶涓锛氬畾涔涓涓闈炲父澶х殑鏁扮粍锛屽惊鐜緭鍏ュ苟妫娴嬭緭鍏ュ硷紝绱姹傚钩鍧囥傛柟娉曚簩锛氬姩鎬佹暟缁勶紝鏍规嵁鏈夋晥杈撳叆锛屽疄鏃舵墿灞曟暟缁勫湴鍧闀垮害銆傛柟娉曚笁锛氭妸姣忎釜鏁板瓧鍒涘缓鎴愮粨鏋勪綋锛屾瀯寤洪摼琛紝瀹炵幇鑷敱鎵╁睍鍜屽垹闄ゃ備笅闈㈡垜鐨勪唬鐮佹槸鐢ㄦ柟娉曚簩鍐欑殑锛歩nclude <stdio.h> include <malloc.h> int input(int **nsp);//杈撳叆浠绘剰涓...
  • 缂栧啓涓涓猚绋嬪簭,浠庨敭鐩杈撳叆浠绘剰涓涓浜斾綅鏁,鎶婅繖涓暟鍊煎垎瑙d负鍗曚釜鏁板瓧,鐒 ...
    绛旓細include <stdio.h> int main(void){ int a,b,c,d,e;long s;printf("璇杈撳叆涓涓5浣嶆暟\n");scanf("%ld",&s);a = s * 0.0001;b = (s * 0.001) - a * 10;c = (s * 0.01) - (a * 100 + b * 10);d = (s * 0.1) - (a * 1000 + b * 100 + c * 10)...
  • 鐢C璇█瀹炵幇涓嬮潰鐨勫姛鑳 1銆佺敤鎴杈撳叆闀垮害涓嶈秴杩50鐨浠绘剰鏁村瀷鏁版嵁骞跺皢鍏...
    绛旓細for (i=1;i<=50;i++){ ch=getchar();if (ch==13 || ch==''|| ch<'0' || ch>'9'){ if (i==1) printf("璇杈撳叆鏈夋晥鏁板瓧");return ;} else { if (!(T = (BiTNode *)malloc(sizeof(BiTNode)))exit(OVERFLOW);T->data = ch; // 鐢熸垚鏍圭粨鐐 CreateBiTree(T-...
  • C璇█濡備綍杈撳叆涓涓鏁扮粍
    绛旓細瑕佸厛缁欒緭鍏ョ殑姣涓涓暟瀛缁欎簣瀹冪殑鍦板潃锛屼究浜庤闂紝鏈鍚庢嬁寰楀埌鐨勬暟璁$畻鍑哄钩鍧囧艰緭鍑猴紝绋嬪簭灏辩紪鍐欏畬鎴愪簡锛3銆佷唬鐮佸叏閮ㄧ紪鍐欐垚鍔熶箣鍚庣紪璇戣繍琛岋紝鍦ㄥ脊鍑虹殑杈撳叆闈㈡澘涓杈撳叆浠绘剰5涓暣鏁帮紝鎸夊洖杞﹂敭锛屽嵆鍙緱鍑哄钩鍧囧硷紝浠ヤ笂灏辨槸鐢C璇█杈撳叆涓涓暟缁勶紝鍏抽敭鐐规槸鏁扮粍鐨勮幏鍙栬鐢ㄦ寚閽堬細...
  • c璇█,缂栧啓涓涓▼搴忓彲浠杈撳叆浠绘剰涓涓涓缁存暟缁,浠g爜
    绛旓細浣犲ソ锛屼綘鐨勬剰鎬濇槸閫氳繃閿洏杈撳叆鏁扮粍鐨勫厓绱狅紝鐒跺悗灏嗘暟缁勮緭鍑哄悧锛熷鏋滄槸杩欐牱鐨勮瘽锛岄偅涔堟湁涓ょ鏂规硶銆傜涓绉嶏細鍦ㄨ緭鍏ユ暟缁勫厓绱犱箣鍓嶏紝寰楀厛杈撳叆鏁扮粍鐨闀垮害銆傜浜岀锛氫娇鐢ㄩ摼琛ㄣ傝繖鏃跺氨涓嶉渶瑕佹寚瀹氭暟缁勭殑闀垮害 浜嗐傛垜鍏堢‘瀹氫竴涓嬫槸涓嶆槸杩欐牱锛屽鏋滀綘纭疄鏈夎繖涓渶姹傜殑璇濓紝鎴戝啀缂栧啓浠g爜锛屽ソ鍚楋紵
  • c璇█鎬庝箞鎶婅椽鍚冭泧鐨勯暱搴﹀畾涔夋垚浠绘剰闀垮害?
    绛旓細璐悆铔囦竴寮濮嬮粯璁闀垮害鏄涓涓鍊硷紝浣犲彲浠ョ郴缁熼粯璁ゆ垨鑰呴殢鏈轰骇鐢熴傚綋鐒讹紝浣犱篃鍙互閫夋嫨璁╃敤鎴杈撳叆銆傛垜浠垎绫昏鏄庡搴旈渶姹傘傜郴缁熼粯璁ら暱搴︼細寰堢畝鍗曪紝浣犺嚜宸辫祴鍊煎氨濂姐傞殢鏈轰骇鐢燂細鍒╃敤绯荤粺鑷甫鍑芥暟鍙互瀹炵幇random鐨勮祴鍊笺傜敤鎴疯緭鍏ワ細杈撳叆~~~璧嬪笺備竴寮濮嬫垜浠寤虹珛涓涓簩缁存暟缁勫嵆鍙
  • 扩展阅读:c++语言入门自学 ... 序列号里有θ怎么输入 ... c++入门程序代码 ... c语言怎么分两行输入 ... c语言代码生成器 ... c 输入任意长度字符串 ... c++必背入门代码 ... 编程θ怎么打 ... ‖c语言怎么在键盘输入 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网