亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

現在功能已經實現,但是沒有注釋過的哪一行,返回的就是亂碼,請教為什么?

現在功能已經實現,但是沒有注釋過的哪一行,返回的就是亂碼,請教為什么?

qq_笑_17 2023-03-12 20:16:28
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <string.h>int instrr(char *str,char *substr){char *p,*r;int flag=0,n=0;while(*str){n++;p=str;r=substr;while(*r)if(*p==*r){p++;r++;}else break;if(*r=='\0'){flag=1;break;}str++;}if(flag==0)n=0;return n;}char *Element(char *xml,char *eleBegin,char *eleEnd){int bdgin,end,len;//元素首地址,尾地址,長度char str[200];char ele[200];char *s;//char *ele;int k,i;len=strlen(eleBegin);bdgin=instrr(xml,eleBegin);end=instrr(xml,eleEnd);strcpy(str,xml);i=0;for (k=bdgin+len-1;k<end-1;k++){ele[i]=str[k];i++;}s=ele;//ele=TEMP;printf("\n%s\n",s);//這一行沒有用,但是沒他,返回的就是亂碼return s;}main(void){char *a;char *b;char *c;char *d;a="lm";b="cd";c=Element("abcdefghijklmn",b,a);d=c;printf ("%s %s\n",d,c);}Element(char *xml,char *eleBegin,char *eleEnd)函數的目的是從xml字符串中把eleBegin和eleEnd之間的全部字符返回。
查看完整描述

2 回答

?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

你的寫法有問題...
char ele[200];
s=ele;
ele為函數內部定義的定長數組,等函數過程結束,對應的內存就會被自動釋放,所以這樣寫是不對的
加了printf也不對,只是printf可能延遲了ele的釋放

查看完整回答
反對 回復 2023-03-15
?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

寫法上有問題:
1. Element函數中,for循環后最好有個ele[i] = '\0',字符串的結尾符;
2. main函數可以用一些這種方式:
int main(void) {
char *a;
char *b;
char c[256];
//char c*;
char *d;
a="lm";
b="cd";
//int bufSize = 256;

//c=(char*)malloc(bufSize*sizeof(char));
//memset(c,0,bufSize);
strcpy(c,Element("abcdefghijklmn",b,a));
d=c;
printf ("%s,%s\n",d,c);
//free(c);

return EXIT_SUCCESS;
}


查看完整回答
反對 回復 2023-03-15
  • 2 回答
  • 0 關注
  • 104 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號