c語言insert函數
『壹』 c語言編寫函數insert(char s1[ ],char s2[ ],int pos),實現在字元串s1中的指定位置pos處插入字元串s2。
你寫這個貌似不能實現額
用string.h庫很容易實現的
要是你不能用string.h的話 你就再追問一次 我幫你把你這個改改 單貌似要改動的地方不少
#include <stdio.h>
#include <string.h>
void insert(char s1[],char s2[],int pos);
void main()
{
char s1[50],s2[50];
int pos;
gets(s1);
gets(s2);
printf("請選擇要插入的位置: ");
scanf("%d",&pos);
insert(s1,s2,pos);
}
void insert(char s1[],char s2[],int pos)
{
int i,a,b;
char o[20];
b=0;
a=strlen(s1);
for(i=pos;i<a;i++)
{
o[b]=s1[i];
b++;
}
o[b++]='\0';
s1[pos]='\0';
strcat(s1,s2);
strcat(s1,o);
printf("%s",s1);
}
『貳』 c語言編程 用指針編寫函數:insert(s1,s2,f),其功能是在字元串s1中的指定位置f處插入字元串s2
#include<stdio.h>
intinsert(char*s1,char*s2,intf)
{
char*cp,*tcp;
tcp=s1+strlen(s1);
cp=s1+f;
if(tcp<cp)
return-1;
while(tcp>=cp)
{
*(tcp+strlen(s2))=*tcp;
tcp--;
}
while(*s2!='')
{
*cp=*s2;
cp++;
s2++;
}
return0;
}
intmain(void)
{
charstr1[128];
charstr2[128];
intf;
gets(str1);
gets(str2);
scanf("%d",&f);
insert(str1,str2,f);
puts(str1);
return0;
}
『叄』 編寫一個函數insert(s1,s2,ch),實現在字元串s1中的指定字元ch位置處插入字元s2. 高財富哦
是這個意思嗎?
C語言實現,insert函數未對傳入字元串進行邊界檢測,如果傳入數組已滿,函數會更改在內存連續的地址上的未知內容,故需保證傳入數組未滿。如果要在函數中處理需增設一個參數傳入數組長度進行判斷,以下是代碼,包括測試的主函數部分:
#include<stdio.h>
#include<string.h>
voidinsert(char*s1,chars2,charch)
{
char*pos;
char*insert_flag;
for(pos=s1;*pos!=''&&*pos!=ch;pos++);//在s1里尋找字元ch
if(''==*pos)
{
printf("未找到字元'%c'! ",ch);
return;
}
for(insert_flag=s1+strlen(s1);*insert_flag!=ch;insert_flag--)//從s1指向字元串的結束符開始元素依次後移
{
*(insert_flag+1)=*insert_flag;
}
*(insert_flag+1)=*insert_flag;
*insert_flag=s2;
}
voidmain()
{
chars[20]="hello,frind";//把20改為12則數組滿
printf("插入前%s ",s);
if(strlen(s)!=sizeof(s)-1)
{
insert(s,'e','n');
printf("插入後%s ",s);
}
elseprintf("數組已滿,拒絕插入! ");
}
測試:
『肆』 C語言insert的用法
表示「插入」,它並不是C語言的一部分,用在函數名中可以表示插入元素。
例題:
#include
<iostream>
#include
<vector>
using
namespace
std;
int
main()
{
vector<int>
intArray;
int
i;
for(i=0;i<10;i++)
{
intArray.push_back(i);
cout<<intArray[i]<<"
";
}
cout<<endl;
intArray.insert(intArray.begin()+1,intArray.begin()+3,intArray.begin()+5);
for(i=0;i<intArray.size();i++)
cout<<intArray[i]<<"
";
system("pause");
return
0;
}
『伍』 C語言程序設計題,insert函數怎麼寫
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
intmain(){
chars[100]="Iamaboy.";
chart[50]="good";
voidinsert(chars[],intn,chart[]);
insert(s,8,t);
puts(s);
return0;
}
voidinsert(chars[],intn,chart[]){
intlengths=strlen(s);
intlengtht=strlen(t);
inti,j;
if(n>=lengths){
perror("Invalidindex. ");
exit(1);
}
chartail[lengths-n];
j=n;
for(i=0;;i++){
if(s[j]=='')
break;
tail[i]=s[j];
j++;
}
tail[i]='';
s[n]='';
s=strncat(s,t,lengtht);
s=strncat(s,tail,lengths-n);
}
運行結果如下:
『陸』 C語言insert的用法,詳細點哦
insert 只是一部分函數自帶的功能 , 不能直接使用,一般是STL 裡面函數的附加功能。比如說
vector #include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> intArray;
int i;
for(i=0;i<10;i++)
{
intArray.push_back(i);
cout<<intArray[i]<<" ";
}
cout<<endl;
intArray.insert(intArray.begin()+1,intArray.begin()+3,intArray.begin()+5);
for(i=0;i<intArray.size();i++)
cout<<intArray[i]<<" ";
system("pause");
return 0;
}
『柒』 insert(a,10,number)在c語言中什麼意思
insert就名稱來看一般是插入操作的函數,
一般來說a是插入的數組,10是插入的位置,number是插入位置的值
『捌』 c語言鏈表插入一個新節點的函數問題
首先,主函數中,「請輸入插入的數據」那裡scanf應該是&b,這是引發崩潰的原因。
其次,insert函數的目的應該是想插入數據後仍是有序鏈表。但你的insert函數邏輯太亂,有些不必要的判斷,我修正了你的代碼,貼給你看看。(雖然你insert是想保證有序,但你在創建的時候沒有保證有序,所以最終結果不一定是有序。例如,創建 1,5,2,插入3,最後輸出的是 1,3,5,2)
代碼修改:
scanf("%d", &b);
重寫了insert函數,簡化邏輯;
動態分配的內存記得釋放,增加freeNode釋放空間
#include<stdio.h>
#include<stdlib.h>
structlink
{
intdata;
structlink*next;
};
structlink*add(structlink*head);//創建鏈表
voiddisplay(structlink*head);//輸出數據
structlink*insert(structlink*head,intb);//插入新節點
voidfreeNode(structlink*); //釋放空間
intmain()
{
charc;
structlink*head=NULL;
printf("要創建一個鏈表嗎?");
scanf("%c",&c);
while(c=='y'||c=='Y')
{
head=add(head);
printf("要繼續創建節點嗎?");
scanf("%c",&c);
}
display(head);
intb;
printf("輸入插入的數據");
scanf("%d",&b);
head=insert(head,b);
display(head);
freeNode(head);
}
structlink*add(structlink*head)
{
intdata;
structlink*p=(structlink*)malloc(sizeof(structlink));
if(head==NULL)
{
head=p;
}
else
{
structlink*pr=head;//一個臨時指針pr先保存下head的地址
while(pr->next!=NULL)
{
pr=pr->next;
}
pr->next=p;
}
printf("輸入數據");
scanf("%d",&p->data);
p->next=NULL;
returnhead;
}
voiddisplay(structlink*head)
{
structlink*pr=head;
while(pr!=NULL)
{
printf("%d ",pr->data);
pr=pr->next;
}
}
structlink*insert(structlink*head,intb)
{
structlink*ptr=head,*prev=head;
structlink*newNode=(structlink*)malloc(sizeof(structlink));
newNode->data=b;
while(ptr&&b>ptr->data){
prev=ptr;
ptr=ptr->next;
}
newNode->next=ptr;
if(ptr==head) head=newNode;
else prev->next=newNode;
returnhead;
}
voidfreeNode(structlink*node){
if(!node) return;
freeNode(node->next);
free(node);
}
『玖』 insert_在C語言中是什麼意思
表示「插入」,它並不是C語言的一部分,用在函數名中可以表示插入元素。
『拾』 C語言,insert函數
我再Visualstudio下寫的程序
#include<stdio.h>
#include<stdlib.h>
#defineDATATYPE1int
#defineMAXSIZE100
typedefstruct
{DATATYPE1datas[MAXSIZE];
intlast;
}SEQUENLIST;
SEQUENLISTa;
intinsert(SEQUENLIST&a,DATATYPE1x,inti)
{
intk;
if(i<1||i>a.last+1||a.last>=MAXSIZE)
return0;
else
{
for(k=a.last;k>=i;k--)
a.datas[k]=a.datas[k-1];
a.datas[i-1]=x;
a.last=a.last+1;
for(i=0;i<a.last;i++)
printf("%d",a.datas[i]);
printf(" ");
printf("a.last=%d ",a.last);
return1;
}
}
intDelete(SEQUENLIST&a,inti)
//C++中的引用,不然該函數返回後,原來的結構體並未發生變化
{
intk;
if(i<1||i>a.last+1||a.last>=MAXSIZE)
return0;
else
{
for(k=i-1;k<a.last;k++)
a.datas[k]=a.datas[k+1];
a.last--;
for(i=0;i<a.last;i++)
printf("%d",a.datas[i]);
printf(" ");
printf("a.last=%d ",a.last);
}
}
intmain()
{
inti;
for(i=0;i<10;i++)
a.datas[i]=i+1;
a.last=10;
insert(a,99,5);
Delete(a,1); //刪除第一個元素
system("pause");
return0;
}