gpt4 book ai didi

c - 在 fgets() while 循环期间清空动态数组以供重复使用

转载 作者:太空宇宙 更新时间:2023-11-04 08:22:52 25 4
gpt4 key购买 nike

我有一个动态数组,每次调用“push”函数时都会存储字符,然后在 main 中执行剩余的操作。

为了获得用户的输入,我使用 fgets() 和标准输入作为我的第三个参数。 fgets() 将继续运行,直到用户输入字符“q”。因此,用户可以继续输入新的字符行,然后按“Enter”键。

我的问题是如何每次为新的输入行重置动态数组?换句话说,在按下“Enter”键后重置动态数组,并重新使用清空的动态数组?

void reset (structStack *s, char *buffer){
int i = 0;
while(isEmpty(s)== false) //Checks to see if the dynamic array is empty
pop(s); //Calls "pop" function to decrement top value

for(i = 0; i < 300; i++) //Resetting the buffer array used with fgets()
buffer[i] = '\0';
}

因为我还使用 fgets() 来检索字符并存储到某个静态数组中,难道我还需要重置我的静态数组吗? (缓冲区是我与 fgets 一起使用的静态数组)

更新:

void push ( structStack *s, char buffer){   //Called every time user inputs a character
s->dArr[s->top] = buffer; //pushing the character from fgets into a dynamic array
s->top++; //Increment the top most value in the stack for adding another character into the dynamic array
}

void pop (structStack *s){
if (isEmpty(s) == false) //Just checks if the stack is empty
s->top--;
}

char top ( structStack *s ){
if (isEmpty (s) == false){
return ( s->dArr[s->top - 1] );
}
else
return 'n'; //Just a random letter
}

最佳答案

为了效率和冗余目的,就这样做

buffer[0] = '\0';

现在您可以将缓冲区的其余部分视为垃圾 :)。这里最好的是 fgets() 可以优雅地处理这种情况,只需在它读取的任何内容后附加一个 '\0'

关于c - 在 fgets() while 循环期间清空动态数组以供重复使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32621140/

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