【发布时间】:2015-03-24 17:13:26
【问题描述】:
我正在 c 中为我的信息学类实现拼写检查算法
特殊要求是:
- 主函数中的所有内容
- 不允许字符串类
- 保持简单(以便在汇编器中进一步重新实现)
所以我现在卡住了。我创建了一个程序,但如果没有strstr 或sscanf,我无法想象如何实现它。
我的代码:
int main() {
char c;
int index;
int len = 0;
char a[10000];
char s[100];
char *e;
char ch = ';';
char p = '.';
while ((c = getchar()) != '\n') {
a[index++] = c;
}
char *test;
test = a;
char *start;
while (*test != ch)
*++test;
e = test;
*e++ = 0;
int k = 0;
while (e[k] != p) {
k++;
}
e[k] = 0;
int x;
int i, j, counter = 0;
for (x = 0; 1 == sscanf(e += x, "%99s%n", s, &x);)
if (strstr(a, s))
printf("*%s* ", s);
else
printf("%s ", s);
puts(".");
}
知道如何重写它吗?特别是我正在寻找sscanf 替代方案。
编辑:
输入声明如下:
XY BCDE BX CDE CDEF;BCDE XY UV ABC CDE BX X A CDEF。
这是输入字符串。它被a分成2部分;
首先是字典。 ; 之后的第二个是要检查的词。
如果这个词是已知的,我需要在stdout 上打印它。如果不是,我用"*" 包围打印它。
【问题讨论】:
-
.: 你如何检查拼写是否正确?您必须在某个地方存储正确的拼写。不是吗?
-
可读性失败。单字母 var 名称。
-
此时 strstr 正在检查我....
-
我的编译器说
*++test;没有效果。你想要++test吗? -
这确实有效。我只想增加指针,直到找到分号。