評價: 0 回應: 3 閱覽: 152
置頂

處理字串的函式問題

大家好~~~

如題

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
char *copyStr(int n,const char *str);
 
int main(void) {
	char srcStr[20],dupStr[80];
	int n;
	printf("enter a string(len<20):");
	scanf("s",&srcStr);
	printf("n(n<=4)=");
	scanf("d",&n);
	dupStr=copyStr(n,srcStr);
	printf("s",dupStr);
	return 0;
}
 
char *copyStr(int n,const char *str){
	int i,j,len=strlen(str);
	char array[80];
	for(i=0;i<n;i++){
		for(j=0;j<len;j++){
			array[len*i+j]=str[j];
		}
	}
	array[len*i]='\0';
	return *array;
}

char* copyStr(int n,const char *str)

小弟將傳入的str複製n次後回傳

在main()裡面的呼叫敘述是dupStr=copyStr(n,srcStr);

現在有個問題是我這樣寫會編譯錯誤:
return makes pointer from integer without a cast

我google後還是不懂為什麼這樣會錯?

也不確定我讓函式傳回一個陣列的指標是不是對的?

能否請各位指點一下?

熱門回應

謝謝分享

indecision

看這個函式的宣告, 一般就兩個作法

一個是在函式內 malloc 然後複製好回傳

但要記得把回傳值 free 掉, 不然就 memory leak 了

另一個是在函式內有一個 static char buf[BUF_LEN]

直接複製到這個 buf 後回傳, 然後拿到的人就不用 free

但是就不能這樣用:f(copyStr(1,"abc"),copystr(2,"def")

會員登入 (先登入會員才能回覆留言喔!)

Facebook留言