gpt4 book ai didi

c - 在 C 中使用 realloc 按字符读取输入字符

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

我想逐个读取输入的字符并将其作为一个单词保存到 char* 数组中。我不知道输入会有多长时间,所以我想动态分配内存。当 char 为空白时,程序结束。我怎样才能使用 realloc 做到这一点?这是我的代码:

#include <stdio.h>
int main(void) {
char *word=malloc(1*sizeof(char));
char c;
int numOfChars=0;
c=getchar();
word[0]=c;
numOfChars++;
while((c=getchar())!=' '){
numOfChars++;
realloc(word,numOfChars);
word[numofChars-1]=c;
}
printf("%s", word);

return 0;
}

示例输入:Word示例输出:Word

最佳答案

程序可以看成下面的样子。考虑到输入会被缓冲和填充,直到输入新的行字符,该行字符也是空白字符。如果要使用格式说明符 %s 输出结果字,则结果字必须以零结尾。

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

int main( void )
{
int c;
size_t n;
char *word;
char *tmp;

n = 0;
word = malloc( n + 1 );
word[n++] = '\0';

printf( "Enter a word: " );

while ( ( c = getchar() ) != EOF && !isspace( c ) && ( tmp = realloc( word, n + 1 ) ) != NULL )
{
word = tmp;
word[n-1] = c;
word[n++] = '\0';
}

printf( "You've entered \"%s\"\n", word );

free( word );
}

程序输出可能是这样的

Enter a word: Hello
You've entered "Hello"

关于c - 在 C 中使用 realloc 按字符读取输入字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37344876/

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