本文目錄一覽:
C語言字元串輸入長度
其實那樣是錯誤的!!
因為地址已經越界了!!
之所以能輸出是因為你馬上輸出和%s,%s是以字元串的形式輸出,要是%c的話你就不知道下一個地址在哪了!
要是一不小心會將系統的某些文件的內容給覆蓋!!所以最好別用!!!
還有勸樓主寫頭文件時如果不是在家定義的最好寫成下面的形式
#include stdio.h
系統頭文件一般最好寫成這樣,能節省運行時間,提高效率!
在c語言中如何輸入一個特別長的數
在目前的32位編譯器中(含多數的64位編譯器)int與long的長度都是相等的,都是32位的它的unsigned範圍為0到4,294,967,295 當然,一般的運算也夠了(因為大數一般用浮點)如果你的編譯器支持64位(long long或__int64)那它的unsiged範圍可達18446744073709551615當然,如果你覺得還不夠大,就要自己用數組處理了(網上也有大數運算的庫)
c語言如何輸入任意長度的字元串數組
「任意長度」實際上是做不到的,即使所用的軟體平台沒有限制,硬體環境也不允許。所以「任意長度」應當理解為在一個很大的空間之內沒有限制地輸入字元串而不用事先確定長度。鑒於這種理解,可以定義一個輸入函數,先動態申請一個較大的空間,直接向其內輸入字元串;輸入完畢後檢測其長度,再按實際需要申請一個合適大小的空間,把剛才輸入的字元串拷貝到這個合適大小的空間里,再把原先申請的大空間釋放。舉例代碼如下:
//#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…\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;
}
c語言中怎麼實現任意長度字元串輸入
其實核心就是實現動態數組,無論字元串多長,都能夠儲存。
用getchar一個一個得到字元,直到文件結束。
核心代碼實現:
int n=0,k=100; //初始化,字元串長度為0,字元串空間長度為100
char * s2 = NULL,s1 = (char *)malloc(100); //初始化字元串空間
if (s1 == NULL) return; //內存分配失敗,返回
while((c=getchar())!=EOF){ //判斷是否到文件結束,一個個讀取字元
if(k=n){ //當前字元串長度大於等於字元串空間長度時
k*=2; //長度增長2倍
s2 = (char *)realloc(s1,k); //重新分配內存
if(s2 == NULL){ //內存分配失敗
free(s1); //釋放已分配內存
return;
}else{ //內存分配成功
s1=s2;
}
}
s1[n++]=c; //字元串賦值字元
}
s1[n]=0; //字元串末尾置為\0
c語言怎麼輸入任意長度的一個數組
首先 嚴格來說 不可能出現任意長度。 內存是有限的 超出一定長度後,不可能存的下,雖然這個值可能是超級大的,但總有限度。
其次,所謂的任意長度,其實就是可變長數組。
那麼,在事先不知道數組規模下,就要靠輸入,來確定數組大小了。
重點在於,要開闢多大的數組來存
一般有這麼幾種情況
1 直接開一個足夠大的。 比如 雖然不知道有多大,但最大不超過1000個,那就可以直接開個1000元素的數組。
2 動態分配, 使用malloc動態分配內存。
當出現可能的不夠情況,用realloc重新分配。
原創文章,作者:MQT8X,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/128213.html