『壹』 c語言中的字元串長度問題
邏輯上的是10,內存存儲的是11
『貳』 在c語言中如何輸入長度不確定的字元串
你可以這樣做:
//文件名: array01.cpp
#include<iostream>
using namespace std;
int main()
{
int len;
cin>>len;
//用指針p指向new動態分配的長度為len*sizeof(int)的內存空間
int *p=new int[len];
...........
delete[] p;
return 0;
}
注意int *p=new int[len];這一句,你不能這樣做:
int p[len];
C++編譯器會報錯說len的大小不能確定,因為用這種形式聲明數組,數組的大小需要在編譯時確定。而且這樣也不行:
int p[]=new int[len];
編譯器會說不能把int*型轉化為int[]型,因為用new開辟了一段內存空間後會返回這段內存的首地址,所以要把這個地址賦給一個指針,所以要用int *p=new int[len];
array01.cpp實現了一個變長的一維數組,但是要養成一個好習慣,就是注意要注銷指針p,使程序釋放用new開辟的內存空間。
不過,如果你能夠知道字元串的最大長度的話,最簡單的辦法就是直接將數組定義為最大長度。
『叄』 C語言字元串的長度和大小的幾個問題
字元串以'\0'表示結束,"he\0llo" \0字元中就結束了,長度為2
"he\\0llo" ,雙引號字元串自動加上'\0'結束符,\\表示'\'字元共有'h' ,'e','\','0','l','l' ,'o'七個字元,長度為7
ch1[]={'h','e','l','l','o'} 不會自動加上'\0',測試長度時直到遇到內存中第一個』\0'結束,長度不固定,如果重新編譯程序運行長度就不一定是11
『肆』 c語言 字元串定義長度問題
這個你就要去仔細溫習一下你的課本了,字元串的話,它都是以『\0』作為結尾的,所以你的「S」其實S後面還有一個『\0』,所以你的str[1]少了,不過你要是這樣初始化就可以str[1]={'S'},這樣就是數組的初始化方式,就不會錯了。
『伍』 C語言如何定於未知長度的字元串
用動態申請內存的方法可以解決這個問題,有兩種措施可以考慮:
設置一個循環,先動態申請一個較小的空間比如10位元組,然後輸入字元;當輸入滿時另外申請一個20位元組的空間,把已輸入的10個字元拷貝過來,釋放掉10個位元組的空間。然後向20個位元組的空間里接著輸入字元,寫滿時再申請一個30字元的空間……如此反復,直到輸入' '時結束。
先動態申請一個較大的空間,如65535位元組,直接向里輸入字元,輸入結束後測出長度,按實際需要另外申請一個空間把字元串拷貝過來,釋放原來的空間。
措施1比較切合題意,但時效差,空間也不省(最後一瞬需要近二倍的空間)。措施2顯得更有實際意義,因為「無限」的長度肯定是不存在的,所以取一個「夠用」的大小臨時用一下是可取的。下面提供措施2的參考代碼:
//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#defineN65535
char*mygets(char*p){
char*ptmp;
if((ptmp=(char*)malloc(N))==NULL){//申請一個較大的臨時用空間
printf("Applicationmemoryfailure... ");
exit(0);
}
gets(ptmp);//向臨時空間直接輸入字元串
if((p=(char*)malloc(strlen(ptmp)+1))==NULL){//按實際需要申請空間
printf("Applicationmemoryfailure... ");
exit(0);
}
strcpy(p,ptmp);//把字元串拷貝所需大小的空間里
free(ptmp);//釋放臨時空間
returnp;
}
intmain(void){
char*str=NULL;
printf("Inputastring... str=");
str=mygets(str);
printf("%s ",str);
free(str);
return0;
}
『陸』 C語言「字元串的長度」有關一簡單問題!
這個 c語言有自己的語法: \ddd 就是反斜杠後面有三位八進制數時當做轉義字元看待,
就像補充題: 第一個字元串長度是5 \0 是字元串結束的標志,
第二個字元串長度也是5, \04 後面的a 不是十進制數字所以不會當做轉義字元 , 而把\0 當做了字元串結束字元 且 \0 佔一個長度
『柒』 C語言關於字元串長度的問題
'