📄 soundex.c
字号:
/* +++Date last modified: 05-Jul-1997 */
/*
** Public domain from Bob Jarvis
*/
#include <stdio.h>
#include <ctype.h>
#include "phonetic.h"
char *soundex(char *instr, char *outstr)
{ /* ABCDEFGHIJKLMNOPQRSTUVWXYZ */
char *table = "01230120022455012623010202";
char *outptr = outstr;
int count = 0;
while(!isalpha(instr[0]) && instr[0])
++instr;
if(!instr[0]) /* Hey! Where'd the string go? */
return(NULL);
if(toupper(instr[0]) == 'P' && toupper(instr[1]) == 'H')
{
instr[0] = 'F';
instr[1] = 'A';
}
*outptr++ = (char)toupper(*instr++);
while(*instr && count < 5)
{
if(isalpha(*instr) && *instr != *(instr-1))
{
*outptr = table[toupper(instr[0]) - 'A'];
if(*outptr != '0')
{
++outptr;
++count;
}
}
++instr;
}
*outptr = '\0';
return(outstr);
}
#ifdef TEST
#include <stdio.h>
#include <stdlib.h>
main(int argc, char *argv[])
{
char code[6];
if (argc != 2)
{
puts("Usage: SOUNDEX string");
return EXIT_FAILURE;
}
printf("soundex(\"%s\") returned %s\n",
argv[1], soundex(argv[1], code));
return EXIT_SUCCESS;
}
#endif /* TEST */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -