gpt4 book ai didi

c - 我正在尝试制作从文件字符中读取的递归函数,但它在 C 中不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 12:32:17 24 4
gpt4 key购买 nike

我一直在接触使用 C 的递归技术,这是我面临的问题 -

bool FetchInputFromFile(int file_dis ){
// file_dis is the file descriptor which I have used in main with `open` sys call
char ch; //I want to read char wise
size_t ch_size =sizeof(ch );
char temp[30];
size_t index =0;
size_t numread;

//memset(temp, 0, 30 );
numread =read(file_dis, &ch, ch_size );
if(ch == ' ' ){
temp[index ] = '\0';
index =0;
InsertInList(temp ); //calling function with temp
}else temp[index++] = ch;
//1//
//base case and recursive call

if(numread ==0 ) return true;
else if(numread == -1 )return false;
else FetchInputFromFile(file_dis );

}

如果我将 printf("%s", temp ); 放在我上面提到的 //1// 的地方,那么输出会很好,但是如果我调用在那里发挥作用,它的性格很明智。

我正在尝试做的是,我正在使用 open 系统调用读取文件,并将文件传递给上述函数并尝试逐个读取一个字符。但是,它没有发生。请帮助我如何调用逐字逐句输出的函数。

谢谢!!!!!!

最佳答案

我认为这可能是一个更好的方法

bool FetchInputFromFile(int file_dis, char* nextWord, int* index)
{
#define MAXSTRINGLENGTH (30)

/* file_dis is the file descriptor which I have used in main with `open` sys call */
const size_t ch_size = sizeof(char); /* size of types not variables.*/
char currentChar; /* I want to read char wise*/
size_t readResult;

if (!nextWord)
{ /* Allocate memory for the buffer if there is none */
nextWord = (char*)malloc(sizeof(char) * MAXSTRINGLENGTH);
}

readResult = read(file_dis, &currentChar, ch_size);
if (currentChar == ' ')
{
nextWord[(*index)] = '\0'; /* Terminate the string*/
InsertInList(nextWord); //calling function with temp */
*index = 0; /* Reset the index to zero to reuse the buffer nextWord*/
}
else if ((*index) < MAXSTRINGLENGTH)
{
nextWord[(*index)++] = currentChar;
//1*/
}
//base case and recursive call*/

if (readResult == 0)
{
if (nextWord) /* Should be a function/macro*/
{
free(nextWord);
nextWord = NULL;
}
return true;
}
else if (readResult == -1)
{
if (nextWord) /* Should be a function/macro*/
{
free(nextWord);
nextWord = NULL;
}
return false;
}
else
{
return FetchInputFromFile(file_dis, nextWord, index);
}
}

(我没有编译这个!)

首先,当您写入字符串时,您需要检查您没有溢出缓冲区。您需要确保每个分支都返回一个值,或者只有一个返回语句并返回不同分支设置的变量。最重要的是,清楚地格式化你的代码,你写了一个代码,但它被阅读了很多次,所以花点时间添加花括号和制表符。

我仍然认为这是一种糟糕的阅读方式,但我认为这样做是有原因的。

关于c - 我正在尝试制作从文件字符中读取的递归函数,但它在 C 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42999418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com