當前位置:首頁 » 編程語言 » c語言未定義長短的字元串
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言未定義長短的字元串

發布時間: 2022-04-07 14:47:04

『壹』 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語言如何定於未知長度的字元串

用動態申請內存的方法可以解決這個問題,有兩種措施可以考慮:

  1. 設置一個循環,先動態申請一個較小的空間比如10位元組,然後輸入字元;當輸入滿時另外申請一個20位元組的空間,把已輸入的10個字元拷貝過來,釋放掉10個位元組的空間。然後向20個位元組的空間里接著輸入字元,寫滿時再申請一個30字元的空間……如此反復,直到輸入' '時結束。

  2. 先動態申請一個較大的空間,如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語言關於字元串長度的問題

'16'是一個有效的字元
'18'不是一個有效的字元,因為8進制數中不能含有8
所以18等同於'1'和'8'

所以

charstr[]="La16ef";
//等同於
charstr[]={'L','a','16','e','f',''};//6個字元
charstr[]="La16ef";
//等同於
charstr[]={'L','a','1','8','e','f',''};//7個字元

『捌』 c語言 怎麼樣設定輸入字元串的長短,過長或過短都不合法

頭文件 string.h 裡面有個函數 strlen 用於求字元串的長度,你可以設定一個定長的緩存區,
如 #define Buffer_Size 255,然後定義一個字元數組 char str[Buffer_Size];
當然你也可以使用動態字元數組,如char *str。

『玖』 c語言中字元串長度的問題

1 有錯誤啊。引號不配對,改為下面,則長度為15。
char *s="\\\"name\\address\n";

2 "\\\"name\\address\n"由下面15個字元構成。
\\
\"
n
a
m
e
\\
a
d
d
r
e
s
s
\n

『拾』 C語言 輸入一個沒有長度限制的字元串數組

兩種辦法,設一個空數組並且初始化為空char ch[]="",或者用指針char *ch,然後gets(ch)就可以了