c语言如何输入任意长度的字符串数组 C语言编程中,输入一个字符串数组,如何得出该数组的长度?

C\u8bed\u8a00\uff0c\u8fd9\u9898\uff0c\u770b\u56fe\uff0c\u600e\u4e48\u8f93\u5165\u4efb\u610f\u957f\u5ea6\u7684\u6574\u578b\u6570\u7ec4\u554a\uff1f\u5b57\u7b26\u6570\u7ec4\u8fd8\u53ef\u4ee5\u5f53\u5b57\u7b26\u4e32\uff0c\u6574\u578b\u7684\u5462

\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

\u4f7f\u7528C\u8bed\u8a00\u51fd\u6570strlen()

\u51fd\u6570\u539f\u578b\uff1aextern unsigned int strlen(char *s);\uff0c\u5728Visual C++ 6.0\u4e2d\uff0c\u539f\u578b\u4e3asize_t strlen( const char *string );\uff0c\u5176\u4e2dsize_t\u5b9e\u9645\u4e0a\u662funsigned int,\u5728VC6.0\u4e2d\u53ef\u4ee5\u770b\u5230\u8fd9\u6837\u7684\u4ee3\u7801:typedef unsigned int size_t;\u3002
\u5934\u6587\u4ef6\uff1astring.h
\u529f\u80fd\uff1a\u8ba1\u7b97\u5b57\u7b26\u4e32s\u7684(unsigned int\u578b\uff09\u957f\u5ea6
\u8bf4\u660e\uff1a\u8fd4\u56des\u7684\u957f\u5ea6\uff0c\u4e0d\u5305\u62ec\u7ed3\u675f\u7b26NULL\u3002
\u7a0b\u5e8f\u4e3e\u4f8b\uff1a
#include
#include
int main(void)
{
char s[]="Golden Global View";
printf("%s has %d chars",s,strlen(s));
return 0;
}

“任意长度”实际上是做不到的,即使所用的软件平台没有限制,硬件环境也不允许。所以“任意长度”应当理解为在一个很大的空间之内没有限制地输入字符串而不用事先确定长度。鉴于这种理解,可以定义一个输入函数,先动态申请一个较大的空间,直接向其内输入字符串;输入完毕后检测其长度,再按实际需要申请一个合适大小的空间,把刚才输入的字符串拷贝到这个合适大小的空间里,再把原先申请的大空间释放。举例代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define N 131071
char *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...
");
        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...
");
        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:
");
    pstr=Any_Long_Str(pstr);
    printf("%s
",pstr);//Look at...
    free(pstr);//Release the space
    return 0;
}


以下是我的思路,仅供楼主参考:
遍历数组,统计'\n'的次数,从而为指向字符串的指针数组分配内存。
然后遍历数组,计算当前子字符串的字符数,然后分配内存,copy。

你想:
(1)\0\n\t 这些属 转义字符,你现在想 作为 非转义字符 输入和判断。
(2)以\n区分不同字符串,但输入串最后 有 \n 还是没有,还是可能有可能无?
(3)输入长度不定,结果存入 **word.
解决办法:
用gets() 读入整行输入
分析有多少个 \n 和 字符串最长的长度需要。
动态分配 word.
把整行 字符串 ,拆开 存入 word
程序如下:
#include<stdio.h>
main(){
char c;
char buff[4098];
int L,i,j,n=0,w=0,wm=0,N;
char **word;
gets(buff);
L = strlen(buff);for (i=0;i<L-1;i++)
{
if (buff[i+1]=='n' && buff[i]=='\\'){
if (w>wm) {wm=w;};
n++;i++;w=0;
}
w++;
}
printf("n=%d wm=%d\n",n,wm);

N=n+1;
word = (char **) malloc(sizeof(char *) * N);for (i = 0; i < N; i++)
word[i] = (char *) malloc(sizeof(char) * wm);

L = strlen(buff); n=0;w=0;for (i=0;i<L-1;i++)
{
word[n][w]=buff[i];
if (buff[i+1]=='n' && buff[i]=='\\'){
word[n][w]='\0';
n++;i++;w=0;
}
w++;
}

for (j=0;j<N-1;j++){for (i=0;i<wm;i++) printf("%c",word[j][i]);
printf("\n");
}
printf("%s\n",word[j]);

return 0; }

例子:
\0Gur\n\0Dhvpx\n\0Oebja\n\0sbk\n\twhzcf\n\tbire\n\tgur\n\tynml\n\tqbt\n
n=9 wm=8
\0Gur
\0Dhvpx
\0Oebja
\0sbk
\twhzcf
\tbire
\tgur
\tynml
\tqbt

任意的?有多长呢?

define len 长度
char **word【len】

if(word【len】==“、n”)

唉。。

干嘛不做环境变量呢 ?

  • C璇█缂栫▼:濡備綍杈撳叆浠绘剰闀垮害鐨勫瓧绗︿覆?(涓嶇敤C++鍜孲tring)
    绛旓細姣忔浣跨敤閮絤alloc鐢宠涓涓┖闂 璁板緱瑕佸寘鍚玸tdlib.h //for 鐢ㄤ竴涓惊鐜帶鍒杈撳叆瀛楃涓 char *p;p=(char *)malloc(sizeof(char));//鍙敵璇蜂竴涓瓨鏀剧┖闂 p=getchar();//鍙栧緱閿洏杈撳叆鐨勫瓧绗 鐢ㄥ畬璁板緱瑕侀噴鏀炬帀 free(p);
  • c璇█杈撳叆瀛楃涓鐨勬柟娉曟湁鍝簺?
    绛旓細1.棣栧厛鎴戜滑鏂板缓涓涓猟ev C++鐨勯」鐩2.鎺ヤ笅鏉ュ湪椤圭洰涓柊寤C璇█绋嬪簭鏂囦欢銆3.鐒跺悗鍦–璇█鏂囦欢涓0鏄庝竴涓瓧鑺傛暟缁勩4.鎺ヤ笅鏉ユ垜浠氳繃printf鍑芥暟鎻愮ず鐢ㄦ埛杈撳叆瀛楃涓诧紝閫氳繃scanf鎺ユ敹鐢ㄦ埛杈撳叆鐨勫瓧绗︿覆銆5.鎺ョ潃鍦ㄩ氳繃printf鍑芥暟杈撳嚭鐢ㄦ埛杈撳叆鐨勫唴瀹广6.鏈鍚庤繍琛孋璇█绋嬪簭锛屾垜浠緭鍏ュ唴瀹逛互鍚庡氨鍙互杈撳嚭浜嗐傝繖鏍峰氨...
  • C璇█:鎴戞兂浠庨敭鐩樹笂杈撳叆涓涓棤闄闀跨殑瀛楃涓,鐢ㄤ粈涔堝嚱鏁板晩?璋㈣阿?_鐧惧害...
    绛旓細瀛楃涓茶緭鍏ュ嚱鏁癵ets 鏍煎紡锛歡ets(瀛楃鏁扮粍鍚)鍔熻兘锛氫粠鏍囧噯杈撳叆璁惧閿洏涓婅緭鍏ヤ竴涓瓧绗︿覆銆傛湰鍑芥暟寰楀埌涓涓嚱鏁板硷紝鍗充负璇ュ瓧绗︽暟缁勭殑棣栧湴鍧銆傘愪緥7.13銆慽nclude\"stdio.h\"main(){ charst[15];printf(\"inputstring:\");gets(st);puts(st);} 鍙互鐪嬪嚭褰杈撳叆鐨勫瓧绗︿覆涓惈鏈夌┖鏍兼椂锛岃緭鍑轰粛涓哄叏閮...
  • ...c璇█缂栦竴涓▼搴,鏉ュ疄鐜扮敤鎴杈撳叆浠绘剰闀垮害鐨勫瓧绗︿覆,鍙嶅悜杈撳嚭鍦ㄥ睆骞曚笂...
    绛旓細include<stdio.h>#include<string.h>int main(){ int len, i; char s[1000]; while(scanf("%s", s) != EOF) { len = strlen(s); while(len--) { printf("%c",s[len]); } printf("\n"); } return 0;} 鏈涢噰绾 ...
  • C璇█涓鐢ㄤ粈涔堝彲琛ㄧず杈撳叆涓涓插瓧绗?
    绛旓細鍦c璇█閲岄潰杈撳叆瀛楃涓鏈変袱绉嶆柟寮1锛氱敤gets(),char a[1000];gets(a);2:鍙互鐢╢or璇彞寰幆锛宖or锛坕=0;i<100;i++锛塻canf("%c",a[i]);
  • c璇█涓,鎬庝箞瀹氫箟涓涓闅忔剰澶у皬鐨勫瓧绗︿覆鍛?
    绛旓細include <stdio.h>#include<malloc.h>#include<string.h>#define maxsize 10int main(){ char *str,*strSave,cSave; int i,n=2,strSize; strSize=maxsize; str=(char *)malloc(sizeof(char)*strSize); printf("杈撳叆浠绘剰闀垮害瀛楃涓锛"); for(i=0;i<strSize;i++...
  • C璇█缂栧啓:杈撳叆浠绘剰涓涓瀛楃涓,缁熻璇ュ瓧绗︿覆涓嚭鐜鐨勫瓧绗a鐨勪釜鏁,骞惰緭...
    绛旓細C璇█缂栧啓:杈撳叆浠绘剰涓涓瀛楃涓,缁熻璇ュ瓧绗︿覆涓嚭鐜鐨勫瓧绗a鐨勪釜鏁,骞惰緭鍑哄叡缁熻鐨勪釜鏁般  鎴戞潵绛 1涓洖绛 #鍥藉簡蹇呯湅# 鍏ㄥ娓稿浣曚綋楠屽绉嶇帺娉?濂藉鑰呯櫨绉 2022-09-28 路 鐧惧害璁よ瘉:鍖椾含鎯犱紒缃戠粶鎶鏈湁闄愬叕鍙稿畼鏂瑰笎鍙 濂藉鑰呯櫨绉 绉戞妧鐢熸椿闂ㄦ埛缃戠珯,鎺㈢储鍙戠幇鐧剧鍏ㄤ功銆 鍚慣A鎻愰棶 ...
  • 璇风敤C璇█缂栧啓浠g爜,杈撳叆10涓瀛楃涓,杈撳嚭鍏朵腑鐨勬渶澶у瓧绗︿覆浠ュ強瀹冪殑闀垮害...
    绛旓細printf("鍏朵腑鏈闀鐨勫瓧绗︿覆鏄細%s\n闀垮害涓猴細%d\n",strs[mIndex]->str,strs[mIndex]->len); return 0;}SINFO *inputStr()//杈撳叆浠绘剰闀垮害瀛楃涓诧紝杩斿洖瀛楃涓插強鍏闀垮害鐨鏁版嵁缁撴瀯{ int size=1; char inputc,*strSave=NULL; SINFO *newStr=(SINFO *)malloc(sizeof(...
  • c璇█濡備綍杈撳叆闄愬埗闀垮害鐨勫瓧绗︿覆?
    绛旓細cdyzxy 鐨勫仛娉曞凡鍩烘湰澶熺敤浜!濡傛灉涓嶈灏辩敤 //...char s[6] = "";for(int i=0;i<5;i++){s[i] = getch();if (s[i]=='\n'){break;}}//...
  • c璇█濡備綍杈撳叆闄愬埗闀垮害鐨勫瓧绗︿覆?
    绛旓細杩欎釜鍙互浠庣紦鍐插尯鏉ュ仛 鏈変竴涓杈撳叆缂撳啿鍖猴紝涓嶇鏄痝ets鎴栬協or寰幆鐢╯canf鍗曚釜杈撳叆锛岃緭鍏ュ悗鍏堣繘鍏ョ紦鍐插尯锛屽湪浠庣紦鍐插尯璇诲叆 浣犲彲浠ュ畾涔夌紦鍐插尯鐨闀垮害锛岃浠栦笉杩涘叆缂撳啿鍖猴紝鐩存帴璇诲叆 鍏蜂綋鍋氭硶鎴戜笉鐭ラ亾锛屼綘鐧惧害涓涓嬪惂
  • 扩展阅读:c语言字符长度怎么看 ... 序列号里有θ怎么输入 ... c语言字符对照表 ... 编程θ怎么用键盘打出来 ... ‖c语言怎么在键盘输入 ... 8个字符怎么输入 ... 字符串长度怎么自己数 ... c语言怎么求数组长度 ... c语言怎么任意输入字符串 ...

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