Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
fgets在c语言中的应用_C - Fatal编程技术网

fgets在c语言中的应用

fgets在c语言中的应用,c,C,我需要写一个程序,将一个数字从一个基数转换成另一个基数。 我需要获得以下形式的用户输入: 我不允许使用scanf,也不允许我假设行的大小。 我已经尝试过使用FGET,但我不知道如何在不限制大小的情况下使用它。我很想知道该怎么做。谢谢 #include <stdio.h> #include <math.h> #include <stdlib.h> int BaseChanger() { char input[12]; printf("enter

我需要写一个程序,将一个数字从一个基数转换成另一个基数。 我需要获得以下形式的用户输入:

我不允许使用scanf,也不允许我假设行的大小。 我已经尝试过使用FGET,但我不知道如何在不限制大小的情况下使用它。我很想知道该怎么做。谢谢

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

int BaseChanger()
{
    char input[12];
    printf("enter the original base, new base ,number");
    fgets(input, 12, stdin);
}

您可以将此代码段用作getline的一种形式


完成此操作后,提取数字,然后执行其余逻辑。

@Efrat.shp动态分配一个固定大小的数组。如果在调用fgets后,arry不包含新行字符,请将数组重新定位为更大的数组,并使用数组中上一个字符串结束的位置再次调用fgets。@xing getline不是标准的C函数,是什么让你认为它在这项作业中是可用的和允许的?假设你以某种方式读到了一行。你会用它做什么?你能对从文件中逐个读取的字符做同样的事情吗?用更大的数字替换12。在这种情况下,我使用4096。如果文件中的第一行长于该行,则会出现问题。如果您将自己限制为12个字符,包括一个空字符、一个换行符和两个空格,那么您就没有太多的数字空间。这些数字总是非负的吗?嘿,谢谢。我们还没有学习指针和分配内存。有没有一种方法可以让您不必使用它?并且在不使用指针的情况下动态分配?不,不可能
int max= 100;
char* array;
array = malloc(max*sizeof(char));
if(array == NULL)
  exit(1);
int c,i=0;
while( ( c = getchar()) != EOF  &&  c != '\n' &&  i < max ) {
    array[ i++ ] = c ;
    if( i == max)
    {
       char * narray = realloc(array, max *= 2);
       if( narray == NULL ){
            free(array);
            exit(1);
       }
       array = narray;
    }
    ...
}