我试图创建一个使用贪婪方法来编写文本的程序。重点是我们不知道行的宽度(否则我们将使用默认值,即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;
}
答案 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)
当您尝试读取未知大小的行时,可以使用动态内存分配方法。
malloc()
最初分配一些内存并开始按字符读取输入字符。realloc()
继续增加分配内存的大小,直到遇到换行符。假设这是您打算做的事情。(存储用户输入的未知大小的行)