为什么函数通不过编译呢。
在一个函数中调用另一个函数。但是总是通不过编译。说被调用的函数没有定义。实在不明白。。。。纠结我把代码全贴出来吧
程序代码:
#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX 256 typedef struct { char ch[MAX]; int length; }SeqString; int main() { void createTextFile(); void StrCount(); void StrInd(); int patrPosition(SeqString s1,SeqString s2,int k); int xz; do { printf("*************************************\n"); printf("*文本文件的检索、子串的统计以及定位 *\n"); printf("*************************************\n"); printf("* 1.建立文本文件 *\n"); printf("* 2.单词子串的计数 *\n"); printf("* 3.单词子串的定位 *\n"); printf("* 0.退出整个系统 *\n"); printf("*************************************\n"); printf(" 请选择:1 2 3 0 "); scanf("%d",&xz); switch(xz) { case 1:createTextFile(); break; case 2:StrCount(); break; case 3:StrInd(); break; case 0:return; default:printf("选择错误!请重新选择:\n"); } }while(1); } int patrPosition(SeqString s1,SeqString s2,int k) { int i,j; i = k - 1; j = 0; while (i < s1.length && j < s2.length) if(s1.ch[i] == s2.ch[j]) { i ++; j ++; } else { i = i - j + 1; j = 0; } if(j >= s2.length) return i + 1 - s2.length; else return -1; } void StrInd() { FILE *fp; SeqString s,t; char fname[10]; int i,j,k,l,m; int wz[20]; //匹配的多个位置 printf("请输入文件名: "); scanf("%s",&fname); fp = fopen(fname,"r"); printf("请输入要检索的单词: "); scanf("%s",&t.ch); t.length = strlen(t.ch); l = 0; while(!feof(fp)) { fread(&s,sizeof(s),1,fp); if(feof(fp)) break; l ++; k = 1; i = 0; while(k < s.length) { j = patrPosition(s,t,k); if(j < 0) break; else { i ++; wz[i] = j; k = j + t.length; } } if(i > 0) { printf("行号: %d, 次数: %d,位置分别为: ",l,i); for(m = 1;m < i + 1;m ++) printf("%5d",wz[m]); printf("\n"); } } } void createTextFile() { SeqString s; char fname[10]; char yn; FILE *fp; printf("请输入要建立的文件名: "); scanf("%s",&fname); fp = fopen(fname,"w"); //以读写的方式打开文件 yn = 'n'; //输入结束标志初始值 while(yn == 'n' || yn == 'N') { printf("请输入一行文本 : "); getchar(); gets(s.ch); s.length = strlen(s.ch); fwrite(&s,sizeof(s),1,fp); //写一行文本到文本文件中 printf("输入结束了?Y or N: "); yn = getchar(); } fclose(fp); //close the file printf("建立文件结束!\n\n"); } void StrCount() { FILE *fp; SeqString s,t; char fname[10]; int i = 0; int j,k; printf("请输入文本文件名: " ); scanf("%s",&fname); fp = fopen(fname,"r"); //open the file for reading printf("请输入要统计的单词: "); scanf("%s",t.ch); t.length = strlen(t.ch); while(!feof(fp)) //扫描文本文件 { fread(&s,sizeof(s),1,fp); //读入一行文本 if(feof(fp)) break; k = 1; //初始化开始位置 while(k < s.length) { j = partPosition(s,t,k); if(j < 0) break; else { i ++; k = j + t.length; } } } printf("\n单词 %s 在文本文件 %s 中共出现了 %d 次\n ",t.ch,fname,i); }[Error] C:\Documents and Settings\Administrator\My Documents\C-Free\Temp\未命名2.c:162: undefined reference to `partPosition'
[Error] collect2: ld returned 1 exit status
这是产生的错误。求助啊