反序方法見 下面 函數 void op(char *s). 主函數是調用的例子。
成都創新互聯公司網站建設提供從項目策劃、軟件開發,軟件安全維護、網站優化(SEO)、網站分析、效果評估等整套的建站服務,主營業務為成都網站建設、成都做網站,重慶APP軟件開發以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業、用心的態度為用戶提供真誠的服務。成都創新互聯公司深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
#include stdio.h
void op(char *s){
int i,k;
char c;
k = strlen(s);
for (i=0;ik/2;i++){c=s[i];s[i]=s[k-i-1];s[k-i-1]=c;};
};
int main()
{
char s[200];
printf("input one line string:\n");
gets(s);
op(s);
printf("%s\n",s);
return 0;
}
輸入:abc123
輸出:321cba
只需將字符串的第一個元素和最后一個元素交換,第二個元素和倒數第二個元素交換,直到字符串長度一半時,就完成倒序了。切記不要全部倒序,不然又恢復成原字符串了。
#include?stdio.h
#include?string.h
//?反序字符串x并返回
char*?reverse_string(char?*x)
{
int?len?=?strlen(x);
int?i,?n?=?len?/?2;
char?tem;
//?第一個和最后一個交換,第二個和倒數第二個交換
//?這樣就只用交換一半
for?(i?=?0;?i?=?n;?i++)
{
tem?=?x[i];
x[i]?=?x[len?-?1?-?i];
x[len?-?1?-?i]?=?tem;
}
return?x;
}
int?main()
{
char?str[]?=?"0123456789";
printf("reverse?string?:?%s\n",?reverse_string(str));
return?0;
}
#include stdio.h
#include string.h
void input(char st[]);//定義輸入函數
void reverse(char st[]);//定義反序函數
int main()
{
char s[20];
input(s);//調用輸入函數
printf("Original string: %s\n", s);//輸出原字符串
reverse(s);//調用反序函數
printf("New string: %s\n", s);//輸出反序后的字符串
return 0;
}
void input(char st[])
{
printf("Please enter string: ");
gets(st);
}
//反序函數
void reverse(char st[])
{
int n=strlen(st);
for (int i=0, j=n-1, t; i(n/2); t=st[i], st[i]=st[j], st[j]=t, i++, j--);
}
擴展資料:
gets()用法:
1、gets() 函數是從鍵盤輸入字符串,該函數只有一個參數。參數類型為 char* 型,即 str 可以是一個字符指針變量名,也可以是一個字符數組名。打開編輯器,新建一個c語言文件,引入標準庫并新建主函數:
2、gets() 函數的功能是從輸入緩沖區中讀取一個字符串存儲到字符指針變量 str 所指向的內存空間,這里的程序是用gets函數輸入字符串,可以看到不像scanf那樣需要使用%號,gets函數中直接傳入字符串即可:
3、最后運行下程序,輸入“i love you”,可以看到gets函數可以直接輸出空格,而scanf函數輸出空格則需要使用轉義字符實現,因此gets函數的使用要比scanf簡潔的多。以上就是gets函數使用方法的演示:
#include?"stdio.h"
#include?"string.h"
void?strReverseB(char?*pstr)
{
int?length=strlen(pstr);
char?tmp;
int?i;
for(i=0;ilength/2;i++)
{
tmp=pstr[i];
pstr[i]=pstr[length-1-i];
pstr[length-1-i]=tmp;
}
}
int?main()
{
char?str[100]={0};
FILE?*fp;
if((fp=fopen("Test.txt","w"))==NULL)
{
printf("File?open?failed!\n");
return?1;
}
printf("Please?input?a?string:");
gets(str);
strReverseB(str);
printf("Output:%s\n",str);
fprintf(fp,"%s",str);
fclose(fp);
}
結果存到了Test.txt文件中:
#include stdio.h
int main()
{ ?int len,i;
char str[100];
gets(str);
len=strlen(str);
for(i=len-1;i=0;i--)
printf("%c",str[i]);
return 0;
}
拓展資料
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平臺。
逆序輸出有很多種,具體的實現方法取決于你題目的要求
1. 如果只是要求逆序輸出,那么可以采用類似的方法:
void reverse(char *s)
{
if(*s=='\0')
return;
reverse(s+1);
printf("%c",*s);
}
這種方法在s很長的情況下會一直遞歸到底,不是很好。
2. 如果需要將字符串整個逆序在函數外面輸出,那么可能希望采用返回字符串指針的方式;實現如下:
char * reverse( char* s )
{
static char *p = s+strlen(s)-1; //p是一個靜態變量,指向當前遞歸層處理的字符串尾,而s指向字符串頭
if(s p)
{
char c = *p; //交換頭尾字符
*p = *s;
*s = c;
p--; //尾向前挪一個
reverse(s+1); //相當于頭向后挪一個
}
return s;
}
3.1 當然,有的時候,并不需要reverse函數本身遞歸,而是可以借助一些輔助的遞歸函數,比如說:
void reversehelp(char * head, char * end)
{
if (head end)
{
char c = *head;
*head = *end;
*end = c;
reversehelp(++head, --end);
}
}
然后在調用時像這樣調用:
char * reverse(char * s)
{
char * end = s + strlen(s) - 1;
reversehelp(s, end);
return s;
}
3.2 類似的輔助函數還可以采用一個字符串指針和一個長度參數的方式,如下例:
void reversehelp( char* s, int n )
{
if ( n 1 )
{
char c = s[n-1];
s[n-1] = s[0];
s[0] = c;
reversehelp( s+1, n-2 );
}
}
然后在調用時如下:
char *reverse(char *s)
{
reversehelp( s, strlen(s) );
return s;
}
標題名稱:c語言字符串反序函數調用 c語言字符串逆序函數
URL鏈接:http://m.newbst.com/article44/hjhche.html
成都網站建設公司_創新互聯,為您提供靜態網站、自適應網站、搜索引擎優化、網站營銷、ChatGPT、小程序開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯