#include <string.h>
#include <assert.h>
#include <stdio.h>
#define MAXCHAR 256
class Search {
int d[MAXCHAR];
int m;
char* patt;
public:
Search(char*);
int find(char*);
}; Search::Search(char* p)
{
assert(p); patt = p;
m = strlen(patt); int k = 0; for (k = 0; k < MAXCHAR; k++)
d[k] = m; for (k = 0; k < m - 1; k++)
d[patt[k]] = m - k - 1;
} int Search::find(char* text)
{
assert(text); int n = strlen(text);
if (m > n)
return -1; int k = m - 1; while (k < n) {
int j = m - 1;
int i = k;
while (j >= 0 && text[i] == patt[j]) {
j--;
i--;
}
if (j == -1)
return i + 1;
k += d[text[k]];
} return -1;
}
int main(int argc, char* argv[])
{
assert(argc == 3); const int MAXLINE = 256;
char fbuf[MAXLINE];
Search patt(argv[1]);
FILE* fp = fopen(argv[2], "r");
assert(fp);
int nf = 0; while (fgets(fbuf, MAXLINE, fp) != NULL) {
if (patt.find(fbuf) != -1) {
fputs(fbuf, stdout);
nf++;
}
} fclose(fp); return !nf;
} 运行是出错:
Assertion failed:argc==3,file c:\2\2.cpp,lin60注:2是我的程序名。
#include <assert.h>
#include <stdio.h>
#define MAXCHAR 256
class Search {
int d[MAXCHAR];
int m;
char* patt;
public:
Search(char*);
int find(char*);
}; Search::Search(char* p)
{
assert(p); patt = p;
m = strlen(patt); int k = 0; for (k = 0; k < MAXCHAR; k++)
d[k] = m; for (k = 0; k < m - 1; k++)
d[patt[k]] = m - k - 1;
} int Search::find(char* text)
{
assert(text); int n = strlen(text);
if (m > n)
return -1; int k = m - 1; while (k < n) {
int j = m - 1;
int i = k;
while (j >= 0 && text[i] == patt[j]) {
j--;
i--;
}
if (j == -1)
return i + 1;
k += d[text[k]];
} return -1;
}
int main(int argc, char* argv[])
{
assert(argc == 3); const int MAXLINE = 256;
char fbuf[MAXLINE];
Search patt(argv[1]);
FILE* fp = fopen(argv[2], "r");
assert(fp);
int nf = 0; while (fgets(fbuf, MAXLINE, fp) != NULL) {
if (patt.find(fbuf) != -1) {
fputs(fbuf, stdout);
nf++;
}
} fclose(fp); return !nf;
} 运行是出错:
Assertion failed:argc==3,file c:\2\2.cpp,lin60注:2是我的程序名。
解决方案 »
- vs2008 使用 CView出现了些问题
- 项目外包,急找高手接活
- Dialog 对话框怎样画图,比如画一个圆(菜鸟在线等)
- 在线,急,谢谢
- 有高手的话,想问二个问题,1、非阻塞式连接是怎么样建立的2、用winsock怎么提交网页的post表单。
- 新手问:如何读取bmp图像的RGB值?
- 输入问题
- 今儿心情高兴,散分了:如何改变滚动条及CListCtrl的CHeaderCtrl的背景色?参与者有分。
- VC6和VC.net作软件时有什么区别???(说者有分)
- Oracle Object for OLE问题!
- 请问怎样设置installshield,使得程序安装后出现在开始菜单和桌面?
- 谁有防火墙的源代码???
assert(argc == 3)处出错。如果你想让用户输入足够多的参数,可以判断argc的值,如果不对,就向用户输出使用方法并退出。
不过看不懂这个程序是用来做什么的.