c - 这段代码中的 fgets 有什么错误?

标签 c pointers fgets

我哪里出错了,为什么?

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

int main()
{
char *str;
int length, i, j, flag = 0;

printf("\n\nEnter string: ");
fgets(str, 20, stdin);
printf("You entered: %s", str);
    return 0;
}

fgets(str, 20, stdin); 行有问题。我想不明白。输入字符串后,编译器停止工作,我收到一条错误消息:该程序已停止工作。你能指出我哪里出错了以及解决这个问题的方法吗?标准库将 fgets 定义为:

char * fgets ( char * str, int num, FILE * stream );

我在 MinGW shell 上使用 Sublime Text 2GCC

基于指针概念的不同问题: char * strchar* strchar *str 之间有什么区别吗?

最佳答案

你需要为str分配内存

任何尺寸,例如 128。

char *str = malloc(128*sizeof(char));

字符字符串[128];

关于c - 这段代码中的 fgets 有什么错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18193850/

相关文章:

c - 用 fgets() 替换 gets()

c - 生成 RSA 并保存在 ASN.1/DER 中时出现段错误?

c++ - 十六进制转储宏 (C/C++)

C 解析函数不起作用

c++ - "return"带有 & 运算符但没有指针的多个值 : How does this work?

c - 在 C90 中将 malloc 用于双指针

c - 将四个嵌套循环转换为 CUDA 内核

c - 通过 system() C/C+ 将 mpi 等级传递给 bash 脚本;奇怪的错误

c - 未知字符串长度的 fgets

c - 用户输入字符串处理