| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1133 人关注过本帖, 1 人收藏
标题:新手来报道求看代码!
只看楼主 加入收藏
q934623325
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-2-10
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:13 
新手来报道求看代码!
#include<stdio.h>
#define MAXLINE 1000

int getline (char line[],int max);
int strindex(char source[],char searchfor[]);

char pattern[] = "ould";

main()
{
    char line[MAXLINE];
    int  found = 0;
    while (getline(line,MAXLINE)>0)
        if (strindex(line,pattern)>=0)
        {
           printf("%s",line);
           found++;
        }
    return found;
}

int getline(char s[],int lim)
{
    int c,i ;
    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;
}
搜索更多相关主题的帖子: include return source 
2015-03-04 10:48
q934623325
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-2-10
收藏
得分:0 
这个应该是找有ould的行然后输出,语法没有错误, 但是结果不是这样啊
2015-03-04 10:49
执笔画江山
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:265
专家分:1010
注 册:2015-1-13
收藏
得分:3 
getline的用法  对吗

授人以鱼,不如授人以渔
2015-03-04 11:28
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:3 
什么错误呢

我不是砖家,要努力成为砖家。
2015-03-04 13:29
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:3 
编译、链接都通过了,那么代码的目的是干什么

一片落叶掉进了回忆的流年。
2015-03-04 14:12
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:3 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXLINE 1000
#define MAXLEN 80

#define MALLOC(p, size, type)\
    if(!(p = (type)malloc(size))) {\
        fprintf(stderr, "malloc error...");\
        exit(EXIT_FAILURE);\
    }

#define CALLOC(p, size, sizeT, type)\
    if(!(p = (type)calloc(size, sizeT))) {\
        fprintf(stderr, "calloc error...");\
        exit(EXIT_FAILURE);\
    }

#define FREE(p)\
    if(p){\
        free(p);\
        p = NULL;\
    }

void search(int rows, char *line[], int len, char *pattern) {
    int i;
    char *p, *tmp;
    CALLOC(tmp, (len + 1), sizeof(char), char*);

    for(i = 0; i < rows; i++) {
        p = line[i];

        while(*p != '\0') {
            if(*p == *pattern) {
                strncpy(tmp, p, len);

                if(strcmp(tmp, pattern) == 0) {
                    printf("%s", line[i]);
                    break;
                }
            }

            ++p;
        }
    }
    FREE(tmp);
}

int main(void) {
    char *pattern = "ould";
    char *line[MAXLINE];
    int rows = -1;

    while(++rows < MAXLINE) {
        MALLOC(line[rows], MAXLEN * sizeof(char), char*);
        fgets(line[rows], MAXLEN, stdin);

        if(*line[rows] == '\n') break;
    }

    search(rows, line, strlen(pattern), pattern);

    while(rows >= 0) {
        FREE(line[rows]);
        rows--;
    }

    return 0;
}


[ 本帖最后由 longwu9t 于 2015-3-4 17:45 编辑 ]

Only the Code Tells the Truth             K.I.S.S
2015-03-04 16:48
zs1993
Rank: 1
等 级:新手上路
帖 子:1
专家分:3
注 册:2013-8-29
收藏
得分:3 
回复 2楼 q934623325
你是指只能一行一行的输入文本吗?
2015-03-04 22:42
BuilderZ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:82
专家分:123
注 册:2014-9-22
收藏
得分:3 
2015-03-05 03:24
樊先知樊先知
Rank: 1
等 级:新手上路
帖 子:4
专家分:3
注 册:2015-3-5
收藏
得分:3 
这个程序是干嘛的?帮你改
2015-03-05 11:07
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
重写一遍……
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXLINE 1000
#define MAXLEN 80

#define MALLOC(p, n, t)\
    if(!(p = (t*)malloc((n) * sizeof(t)))) {\
        fprintf(stderr, "malloc error...");\
        exit(EXIT_FAILURE);\
    }

#define FREE(p) if(p) free(p), p = NULL;

char * getline(char *line) {
    MALLOC(line, MAXLEN, char);
    fgets(line, MAXLEN, stdin);
    return line;
}

void search(int rows, char *line[], char *pattern) {
    int i;
    for(i = 0; i < rows; i++)
        if(strstr(line[i], pattern) != NULL)
            printf("%s", line[i]);
}

int main(void) {
    char *pattern = "ould";
    char *line[MAXLINE];
    int i = -1;

    while(++i < MAXLINE) {
        line[i] = getline(line[i]);
        if(*line[i] == '\n')
            break;
    }

    search(i, line, pattern);

    while(i >= 0) {
        FREE(line[i]);
        i--;
    }

    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2015-03-05 12:06
快速回复:新手来报道求看代码!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039179 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved