C語言 函數問題

2007-06-26 9:17 pm
關於C語言程式的問題

想要刪除字串中的某一位置的字元該怎麼寫
該函數名稱:stringdel(char ch[],int n)
也就是由主函數或呼叫函數把一條已知字串位址以及要刪除字串中的一個字元的位置傳給stringdel( )函數。
更新1:

字串不固定 所要刪的字元位置也不固定呢 就是 字串是要使用者自行輸入的 輸入字後再跳出一行訊息說 要刪除哪個位置的字元 THX

更新2:

to:耗呆小綿羊 Run不出來 有三個waring = =

更新3:

To Jeff 有error無法Run ps 那是一個還是兩個程式碼 = =?

回答 (6)

2007-06-26 9:38 pm
✔ 最佳答案
void stringdel(char ch[], int n){
int i=0;

for( i=n; i<strlen(ch); i++){
ch[i]=ch[i+1];
}
}

void main()
{
char str[] = "this is a example!";

stringdel(str, 3);
printf("%s\n", str);
}

給您一個簡單的範例
參考參考

2007-06-27 09:03:12 補充:
void main()
{
char str[256];
printf("Please input string: ");
scanf("%s", str);
stringdel(str, 3);
printf("%s\n", str);
}
使用者可輸入字串

2007-06-27 09:04:54 補充:
void main()
{
char str[256];
int n;
printf("Please input string: ");
scanf("%s", str);
printf("請輸入刪除字元位置: ");
scanf("%d",n);
stringdel(str, n);
printf("%s\n", str);
}
參考: 自己
2007-06-28 9:32 pm
//Power by Visual Studio 2005
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void stringdel(char ch[], int n){
char temp[32767];
int i;
strncpy(temp,ch,n-1);
for(i=n;ch[i]!=0;i++)
temp[i-1]=ch[i];
temp[i-1]='\0',strcpy(ch,temp);
}
int main(int argc, char* argv[]){
//==========START==========//
char str[]="Yahoo!Knowledge+";
stringdel(str,6),printf("%s\n",str);
//==========END==========//
printf("\n"),system("PAUSE");
return 0;
}
參考: 別人
2007-06-27 6:56 am
耗呆小綿羊的函數可以改成:

void stringdel2(char *str, int n) {
char temp[32767];
str[n-1]=0;
strcpy(temp, str);
strcpy(temp+n-1, str+n); // 直接拷貝後半段即可, 不用一個一個拷貝
strcpy(str, temp);
}
2007-06-27 4:42 am
是沒錯~
可是我想要的是不固定字串
就是使用者要自行輸入
然後跳出一行訊息要求輸入刪除哪個位置的字元
2007-06-26 10:31 pm
001jeff 的程式碼,善用C的特性,沒有畫蛇添足,簡明有效率,允堪正解。
若能在函式開頭加句 if(n>=0) ,那就更完美了。
2007-06-26 10:04 pm
//Power by Visual Studio 2005
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void stringdel(char ch[], int n){
char temp[32767];
int i;
strncpy(temp,ch,n-1);
for(i=n;ch[i]!=0;i++)
temp[i-1]=ch[i];
temp[i-1]='\0',strcpy(ch,temp);
}
int main(int argc, char* argv[]){
//==========START==========//
char str[]="Yahoo!Knowledge+";
stringdel(str,6),printf("%s\n",str);
//==========END==========//
printf("\n"),system("PAUSE");
return 0;
}


收錄日期: 2021-04-27 17:15:08
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20070626000016KK04178

檢視 Wayback Machine 備份