C語言如何在字符數(shù)組中插入一個字符
在字符數(shù)組中插入一個字符
以前都是照貓畫虎,一直都沒有自己親自動手嘗試過。這次親自上陣,把自己的思路盡量理清并完成。
設(shè)計思路

- 定義一個字符數(shù)組a和標(biāo)記插入位置的int型變量pos以及插入字符value。
- 再定義一個數(shù)組b,大小應(yīng)該比a大1(更大當(dāng)然更好),用于pos位后的元素的賦值。
- 賦值,將a中所有元素copy到b。
- 在pos位置前的元素不改動,pos位置的元素改為value。b[pos]=value;
- 對于pos位置后的元素:b[pos+1]=a[pos] //此處的pos執(zhí)行自增運(yùn)算
- 數(shù)組b即所得數(shù)組。
問題思索
關(guān)于gets(),scanf()緩沖區(qū)的理解:
gets()是以換行符為結(jié)束標(biāo)志的。當(dāng)遇到換行符時,函數(shù)停止讀取,回車符不會被載入緩沖區(qū)。scanf()是以\t \n space 為結(jié)束標(biāo)志。
錯誤示范:

當(dāng)遇到以上代碼時,請千萬不要忘記在輸入字符前加getchar()清除掉緩沖區(qū)中的回車符。
正確示范:
代碼附錄
#include <stdio.h>
#include <string.h>
//在char數(shù)組中的第pos個位置添加字符
int main(){
char a[500],b[500];
int pos;
char value;
gets(a);
scanf("%d",&pos);
getchar();
scanf("%c",&value);
for(int i=0; a[i]!='\0'; i++) b[i]=a[i];
b[pos]=value;
for(int i=pos; b[i]!='\0'; i++) b[i+1]=a[i];
puts(b);
} 字符串中插入字符問題
由鍵盤任意輸入一串字符,再輸入一個字符和一個位置,將此字符插入在此串字符的這個位置上。
如:原串為abcdef,插入字符為k,位置為2,新串為abkcdef。
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int length, i, place, cnt=0;
char* str;
char ch;
//為字符獲得足夠的內(nèi)存空間
printf("請輸入這串字符的最大長度:");
scanf("%d", &length);
str = (char*)malloc(length*sizeof(char)+1);
printf("請輸入這串字符:");
scanf("%s", str);
printf("請輸入你要插入的字符:");
scanf("\n%c", &ch);
printf("請輸入你要插入字符的位置:");
scanf("%d", &place);
//判斷字符串中字符的數(shù)量
while(str[++cnt]);
//向后移位
str[cnt+1] = '\0';
for(i=0; i<cnt-place; ++i){
str[cnt-i] = str[cnt-i-1];
}
str[place] = ch;
printf("新的字符串為:%s\n", str);
free(str);
system("pause");
return 0;
}
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
c++ 網(wǎng)絡(luò)庫asio的優(yōu)勢
這篇文章主要介紹了c++ 網(wǎng)絡(luò)庫asio的優(yōu)勢,幫助大家更好的利用c++開發(fā)服務(wù)端程序,感興趣的朋友可以了解下2020-10-10
詳解C++中如何將構(gòu)造函數(shù)或析構(gòu)函數(shù)的訪問權(quán)限定為private
這篇文章主要介紹了詳解C++中如何將構(gòu)造函數(shù)或析構(gòu)函數(shù)的訪問權(quán)限定為private的方法,文中還解釋了構(gòu)造函數(shù)與虛函數(shù)的區(qū)別,需要的朋友可以參考下2016-03-03
C++?STL標(biāo)準(zhǔn)庫std::vector擴(kuò)容時進(jìn)行深復(fù)制原因詳解
我們知道,std::vector之所以可以動態(tài)擴(kuò)容,同時還可以保持順序存儲,主要取決于其擴(kuò)容復(fù)制的機(jī)制。當(dāng)容量滿時,會重新劃分一片更大的內(nèi)存區(qū)域,然后將所有的元素拷貝過去2022-08-08
C語言數(shù)據(jù)結(jié)構(gòu)之隊列算法詳解
這篇文章介紹了C語言數(shù)據(jù)結(jié)構(gòu)之隊列的算法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12

