本文目錄一覽:
C語言怎麼實現可變長度字元串
C語言實現可變長度字元串,主要依靠realloc函數實現,主要代碼如下,
//程序功能,判斷插入字元長度len,若大於預設大小n,調整字元串數組大小,實現動態處理數組大小。
#include stdio.h
#include stdlib.h
#include string.h
int main(int argc, char *argv[])
{
char * pstr = NULL;
int n=10;//字元串初始大小
char str[100];//待插入字元串
int len=0;//待插入字元串長度
pstr = (char*)malloc(sizeof(char)*n);//申請sizeof(char)*n個大小的內存空間
if (pstr==NULL)
{
printf(“內存申請出錯,程序退出!\n”);
exit(1);
}
memset(pstr,’\0′,sizeof(char)*n);//初始化內存空間
printf(“輸入待插入字元串:\n”);
gets(str);
len=strlen(str)+1;
printf(“內存申請出錯,程序退出!%d\n”,len);
if(lenn)//字元串長度大於初始大小n,重新申請內存空間
pstr=(char *)realloc(pstr,sizeof(char)*len);//重新申請內存空間
strcat(pstr,str);//將插入字元串連接給pstr
puts(pstr);
if (pstr==NULL)//清理申請內存
{
free(pstr);
pstr=NULL;
}
return 0;
}
void *realloc( void *ptr, size_t size );函數將ptr指向的儲存空間改變為給定的大小size。 參數size可以是任意大小,大於或小於原尺寸(需要注意的是原始數據會丟失)都可以。返回值是指向新空間的指針,如果錯誤發生返回NULL。
c語言字元串長度有哪些?
這個字元串長度為10個字元。
可以用strlen(“ab’1’\\\12803”)來求這個字元串的長度。
也可以用sizeof(“ab’1’\\\12803”)來求,但是這個求出的結果是多了一個字元串結束符\0。
可以試著輸出這個字元串看看是不是10個字元。
strlen()函數判斷的字元串長度是以\0為結尾作為標誌的。
當char * m=new char[TOKEN_LENGTH]後,雖然為指針分配了地址,但是其指向的內容未被初始化,所以m指向的內容是未知的,可能在第24個字元的位置發現了\0所以strlen()顯示長度為24。
數據類型
字元串數據類型是建模在形式字元串的想法上的數據類型。字元串是幾乎在所有編程語言中可以實現的非常重要和有用的數據類型。在某些語言中它們可作為基本類型獲得,在另一些語言中做為複合類型獲得。多數高級語言的語法允許通常用某種方式引用起來的字元串來表示字元串數據類型的實例;這種元字元串叫做「文本」或「字元串文本」。
以上內容參考:百度百科-字元串
C語言問題,輸出最長字元串
#include
stdio.h
int
main()
{
int
i,len
=
0,maxlen
=
0;
char
*p,*pt,s[1024],subs[100];
printf(“請輸入字元串:
“);
gets(s);
for(pt
=
s;*pt
!=
‘\0’;pt++)
{
if((*pt
!=
‘,’)
(*pt
!=
‘.’)
(*pt
!=
‘
‘)
(*pt
!=
‘”‘)
(*pt
!=
‘\0’))
len++;
else
{
if(len
maxlen)
{
maxlen
=
len;
p
=
pt
–
len;
len
=
0;
}
}
}
for(i
=
0;i
maxlen;i++)
subs[i]
=
*(p
+
i);
subs[maxlen]
=
‘\0’;
printf(“最長的英文詞是:%s,其長度是:%d個字元。\n\n”,subs,maxlen);
return
0;
}
c語言求字元串長度
C語言中字元串長度的函數是strlen(),一個字元的長度為1;
函數原型:
unsigned int strlen (char *s);頭文件:
#include string.h參數說明:s為指定的字元串;
功能說明:strlen()用來計算指定的字元串s 的長度,不包括結束字元’\0’;
返回值:返回字元串s 的字元數;
注意:strlen() 函數計算的是字元串的實際長度,遇到第一個’\0’結束。
示例:
#includestdio.h#includestring.hint main(){ char str[] = “ab\nxyz”;//\n為回車字元,佔一個位元組 printf(“strlen(str)=%d\n”, strlen(str)); return 0;}//輸出結果:strlen(str)=6 收起
C語言 輸出最長字元串問題
你longest函數,當判斷當前單詞比前一個單詞短的時候,你沒有將len置0,導致後一個單詞len累加了。
我修改的地方標註了,把len++拉到判斷外面執行就行。
#includestdio.h
#includestring.h
int main()
{
int alphabetic(char);
int longest(char[]);
int i;
char line[100];
printf(“請輸入一個字元串:\n”);
gets(line);
printf(“最長的單詞是:”);
for(i=longest(line);alphabetic(line[i]);i++)
printf(“%c”,line[i]);
printf(“\n”);
return 0;
}
int alphabetic(char c)
{
if((c=’a’ c=’z’)||(c=’A’ c=’Z’))
return 1;
else
return 0;
}
int longest(char str[])
{
int len=0,i,lenght=0,flag=1,place=0,point;
for(i=0;i=strlen(str);i++)
if(alphabetic(str[i]))
if(flag)
{
point=i;
flag=0;
}
else
len++;
else
{
flag=1;
if(len=lenght)
{
lenght=len;
place=point;
}
len=0; // 修改這個地方!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
return(place);
}
C語言 字元串長度
這個字元串長度為10個字元。
你可以用strlen(“ab’1’\\\12803”)來求這個字元串的長度。
也可以用sizeof(“ab’1’\\\12803”)來求,但是這個求出的結果是多了一個字元串結束符\0。
你可以試著輸出這個字元串看看是不是10個字元。
實際上,這10個字元分別為:
1、a
2、b
3、’
4、1
5、’
6、\\(\\表示:前一個表示這是一個轉義字元,後一個才是字元串中的真實字元)
7、\12(同上,\表示這是一個轉義字元,其後面的1~3個數字位是一個八進位數,在這裡,第3個數字為8,所以它不是這個八進位數的一部分,即這個八進位數應該是12,轉換為10進位數即為10,對應的ASCII碼為一個換行符)
8、8
9、0
10、3
註:\用來說明一個轉義字元,如\\表示反斜杠字元「\」,\ddd表示1~3位八進位數所代表的字元(ASCII碼),\xhh表示1~2位十六進位數所代表的字元。
原創文章,作者:IZGB,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/133445.html