我試圖從stdin讀取fgets()中的行,我想在函數中使用fgets(),我認爲這是問題所在。該字符串可能最長爲1024個字符。當我運行這段代碼,我得到「分割故障(核心轉儲)」C - 從函數中讀取stdin與fgets()中的函數
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 1025
void print_fgets();
int main()
{
print_select();
return 0;
}
void print_select()
{
char *str;
int length;
while (fgets(str, MAX_SIZE, stdin)!=NULL)
{
length=strlen(str);
if (length==MAX_SIZE-1 && str[length-1]!='\n')
{
printf("Error, line overeached buffer!\n");
return 1;
}
if (str[length-1]=='\n')
str[length-1]='\0';
printf("%s\n", str);
}
}
你在哪裏包括? – HuStmpHrrr 2014-11-03 16:18:32
你沒有爲'str'分配內存。這就是爲什麼。 – HuStmpHrrr 2014-11-03 16:19:18
如何分配內存?我是C中的新成員。 – Krop 2014-11-03 16:20:02