[問題] 怎麼把主程式變數帶去副程式

看板C_and_CPP作者 (路人)時間15年前 (2010/09/30 01:16), 編輯推噓4(4012)
留言16則, 7人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題:我想要把主程式的變數帶進去副程式 希望得到的正確結果:副程式的XY應該要=主程式的xy 程式跑出來的錯誤結果:印出卻是不一樣的數字 開發平台: Dev-C++*[m 有問題的code: #include <stdio.h> #include <stdlib.h> #include <string.h> #define string_size 100 #define search_size 100 #define failure_size 100 int kmp_search(int *str, int *sea ,int X,int Y); int main(void) { int x; int y; int a; int i; int string[string_size]; int search[search_size]; int failure[failure_size]; scanf("%d",&x); for(y=0;y<x;y++) { int temp; scanf("%d",&temp); string[y]=temp; } scanf("%d",&a); for(y=0;y<a;y++) { int temp; scanf("%d",&temp); search[y]=temp; } kmp_search(string,search,x,y); printf("kmp_search=%d\n",&kmp_search);/不懂副程式回傳的涵義 所以印出/ system("pause"); return 0; } int kmp_search(int *str , int *sea, int X , int Y ) { /KMP字串搜尋的演算法/ int i=0,j=0; int len_string=X; int len_search=Y; printf("X:%d\nY:%d\n",&len_string,&len_search); \*XY印出來應該是陣列的大小(主程式裡面的xy大小才對) 可是印出來卻不是我要的主程式xy數值*\ int failure[failure_size]; while( i < len_string && j < len_search ) { if(str[i]==sea[j]) { i++; j++; ; } else if(j==0) i++; else j = failure[j-1] +1; } return( ( j == len_search )?( i-len_search ) : - 1 ); } 因為副程式是課本的範例 我也有一個疑問就是副程式return回去的意義是什麼 我主程式裡面需要定義return的數值去分辨我副程式所得到的正確與否嗎? 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.160.109.36

09/30 01:20, , 1F
a ? b : c 如果a為true則執行b,否則執行c
09/30 01:20, 1F

09/30 01:21, , 2F
但他return的結果跑那去了??
09/30 01:21, 2F

09/30 01:21, , 3F
你應該先搞清楚 printf 的用法
09/30 01:21, 3F

09/30 01:21, , 4F
printf("kmp_search=%d\n",&kmp_search); 這個是在印
09/30 01:21, 4F

09/30 01:22, , 5F
還有 printf("kmp_search=%d\n",&kmp_search); 你知道這
09/30 01:22, 5F

09/30 01:22, , 6F
函式的位址, 不是印函式的回傳值
09/30 01:22, 6F

09/30 01:22, , 7F
是印什麼嗎? 先把基本的 C 語言語法學好吧
09/30 01:22, 7F

09/30 01:22, , 8F
printf("X:%d\nY:%d\n",&len_string,&len_search); 錯了
09/30 01:22, 8F

09/30 01:26, , 9F
他return的值你應該要宣告變數接起來的,error handle
09/30 01:26, 9F

09/30 01:29, , 10F
也不一定要用變數接起來啦 XD
09/30 01:29, 10F

09/30 01:31, , 11F
或者用個if()判斷式接起來,error handle蠻重要的
09/30 01:31, 11F

09/30 01:32, , 12F
這麼藝術的排版只有我無法看下去嗎 XDD
09/30 01:32, 12F

09/30 01:32, , 13F
謝謝大家 那接到的數字就是 i-len_search或-1囉? 是這樣?
09/30 01:32, 13F

09/30 01:44, , 14F
Yes.
09/30 01:44, 14F

09/30 01:52, , 15F
這個排版還可以接受, 有看過每行前面沒空白的...
09/30 01:52, 15F

10/03 00:08, , 16F
原來是開學了...
10/03 00:08, 16F
文章代碼(AID): #1CetI79K (C_and_CPP)