Program Diary -2
模拟grep简单命令
-
#include <stdio.h>
-
#define MAXLINE 10000 /*最大输入的行*/
-
-
-
int getline(char line[],int max);
-
int strindex(char source[],char searchfor[]);
-
-
char pattern[] = "ould"; /*待查找的模式*/
-
-
-
int main(void)
-
{
-
char line[MAXLINE];
-
int found = 0;
-
-
while (getline(line, MAXLINE) > 0)
-
if (strindex(line, pattern) >= 0) {
-
found++;
-
}
-
return found;
-
}
-
-
-
int getline(char s[],int lim)
-
{
-
int i, c;
-
i = 0;
-
while (--lim > 0 && (c = getchar()) != EOF && c != '\n')
-
s[i++] = c;
-
if(c == '\n')
-
s[i++] = c;
-
s[i] = '\0';
-
return i;
-
}
-
-
-
int strindex(char s[],char t[])
-
{
-
int i, j, k;
-
-
for (i = 0; s[i] != '\0'; i++) {
-
for (j = i, k = 0; t[k] != '\0' && s[j] == t[k]; j++, k++)
-
;
-
if(k > 0 && t[k] == '\0')
-
return i;
-
}
-
return -1;
-
}
-
Program Diary-1
打印输入各个字符出现频度的直方图:
-
#include <stdio.h>
-
#include <ctype.h>
-
-
#define MAXHIST 15
-
#define MAXCHAR 128
-
-
int main(void)
-
{
-
int c, i;
-
int len; /* length of histogram */
-
int maxvalue; /* max different characters */
-
int cc[MAXCHAR];
-
-
for(i = 0; i < MAXCHAR; ++i)
-
cc[i] = 0;
-
while((c = getchar()) != EOF)
-
if (c < MAXCHAR)
-
++cc[c];
-
maxvalue = 0;
-
for(i = 1; i < MAXCHAR; i++)
-
if (cc[i] > maxvalue)
-
maxvalue = cc[i];
-
-
for(i = 1; i < MAXCHAR; ++i){
-
if (isprint(i))
-
else
-
if (cc[i] > 0) {
-
if ((len = cc[i] * MAXHIST / maxvalue) <= 0)
-
len = 1;
-
} else
-
len = 0;
-
while (len > 0) {
-
putchar('*');
-
len--;
-
}
-
putchar('\n');
-
}
-
exit(1);
-
-
}