gpt4 book ai didi

c - 接受带空格的字符串

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

如何动态接受带空格的字符串?我试过 gets(),但它不起作用,而且我不想从文件中获取输入。我想在不指定字符串大小的情况下接受一个字符串。

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

char *accept()
{
char *s;
s = (char *)malloc(sizeof(char));
gets(s);
return s;
}

int main()
{
char *str;
printf("\nEnter`enter code here` one string");
str = accept();
}

最佳答案

首先,永远不要使用gets()。请改用 fgets()gets() 无法阻止缓冲区溢出。它已从 C 标准 C11 中删除。

这里,

 s = (char *)malloc(sizeof(char));

你只为一个字符分配内存,这只够空字符终止字符串。您需要分配更多空间来读取一行。

 s = malloc(256); //sizeof(char) is always 1. So you don't have to multiply it.
if( fgets(s, 256, stdin) == NULL ) { /* handle failure */

如果缓冲区有足够的空间,fgets() 也会读取换行符。因此,如果不需要,您可能希望将其删除。您可以使用 strcspn() 将其删除:

s[strcspn(s,"\n")] = 0;

关于c - 接受带空格的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35110732/

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