c語言動態指針數組輸入字元串數組
Ⅰ c語言中將字元串用指針數組輸入輸出..
首先確定是字元指針數組還是字元數組指針,前者是一個數組,數組每個元素都是一個字元指針,後者是一個指向字元數組的指針。
若是指向字元數組的指針,則很簡單,使用scanf("%s",
str);函數獲取輸入的字元串,然後使用字元串拷貝函數strcpy(stc,
dest);將獲取的字元串拷貝到指定地址的字元指針數組中,拷貝過程中注意檢查訪問數組是否越界,若越界,則需要在字元數組的最後一個元素賦值為結束符'\0'。
若是賦值
字元指針數組,那麼就是對數組中的某一個元素指向的字元數組進行拷貝賦值,其過程與前者相同。
Ⅱ c語言指針輸入
#include<stdio.h>
int main()
{
int a,b,c,s[3],t;
int *x,*y,*z;//定義指針變數
x=&a;//將a的地址賦給指針x,下同
y=&b;
z=&c;
scanf("%d%d%d",x,y,z);
s[0]=*x;//將指針x所指向的變數值賦給數組s的第一個元素;依次類推
s[1]=*y;
s[2]=*z;
for(int i=0;i<3;i++)//冒泡排序
for(int j=0;j<3-i-1;j++)
if(s[j]<s[j+1])
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
for(int i=0;i<3;i++)
printf("%d ",s[i]);
return 0;
}
Ⅲ 在c語言中如何實現數組的動態輸入
頭文件malloc.h
使用malloc來申請一個初始地址空間。
然後在循環輸入的過程中不斷檢查初始空間是否已滿,滿了就是使用realloc來擴展地址空間。
最後,如申請的地址不需要使用了,且程序沒有結束,需要用free來釋放。
另外,使用malloc或realloc申請時,需要先判斷下返回值是否為空,如有異常申請失敗,用空指針直接使用,會造成程序錯誤。
下面簡單示範:(初始申請2個位元組,之後每次輸入字元擴展1個位元組,回車結束輸入)
#include <stdio.h>
#include <malloc.h>
int main()
{
int len=2;
char *a=NULL,*aSave=NULL,c;
a=(char*)malloc(sizeof(char)*len);
if(!a)
return 1;
a[0]=0;
while(1)
{
c=getchar();
if(c==10)
break;
if(a[0]==0)
a[0]=c,a[1]=0;
else
{
aSave=realloc(a,sizeof(char)*len);
if(!aSave)
return 1;
a=aSave;
a[len-2]=c,a[len-1]=0;
}
len++;
}
printf("輸入的字元串數組是: %s ",a);
free(a);
return 0;
}
Ⅳ c語言動態輸入字元指針數組
s[i]= ch;這一行知跡換成strcpy(s[i],ch);試試
s[0],和s[1]分別對應2次的輸入
需要#include <string.h>
或搭仿並者將scanf("%s"大基,ch);改成scanf("%s",s[i]);
去掉s[I]=ch;