Word包贪婪的方法

时间:2014-12-13 17:09:15

标签: c

我试图创建一个使用贪婪方法来编写文本的程序。重点是我们不知道行的宽度(否则我们将使用默认值,即80)。任何想法?我发布下面的代码,看看我到目前为止做了什么

#include<stdio.h>
#define width 80
int main(void)
{
    int ch,m;
    ch=getchar();
    while(ch!=EOF)
    {
        while ( ch!= ' ' )
        {
               putchar(ch);
               m=m+1;
               ch=getchar();
        }
            if(m>width)
        {
            printf("\n");
            m=0;
        }
        ch=getchar();


    }
    return 0;
}

2 个答案:

答案 0 :(得分:1)

我试过这样的事情

#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
int main (int argc , char **argv)
{
int i=0,capacity,ch,size=0,temp=0,metr=0;
for(i=0;i<argc;i++)
{
    atoi(argv[i]); 
    if(i==1)
    capacity=atoi(argv[i]);
}
printf("%d" , capacity);
if(capacity <=0)
{
    printf("ERROR wrong input");
    return 1;
}

char *data_tmp = NULL;
char *p = malloc(capacity * sizeof(char));
if (p == NULL) 
{ 
    printf("ERROR");
    return 1;
}
    ch=getchar();
    while (ch!= EOF) 
    {
        if (ch == '\0')
            printf("Encoding problem");
            p[size++] = ch;
            metr=metr+1;
        if (size == capacity) 
        {
        capacity += capacity;
        data_tmp = realloc(p, capacity * sizeof(char));
        if (data_tmp == NULL)
            printf("Malloc problem");
        }

        if (metr==capacity)
        printf(" \n");
        metr=0;



    }

    return 0;
 }

答案 1 :(得分:0)

当您尝试读取未知大小的行时,可以使用动态内存分配方法。

  1. 使用malloc()最初分配一些内存并开始按字符读取输入字符。
  2. 使用realloc()继续增加分配内存的大小,直到遇到换行符。
  3. 假设这是您打算做的事情。(存储用户输入的未知大小的行)