我正在研究c,以下是我的代码:
#define _GNU_SOURCE
#include<stdio.h>
#include<stdlib.h>
int main()
{
char* str = NULL;
size_t n;
printf("Enter the string : \n");
getline(&str, &n, stdin);
printf("Initial string is : (%s)\n", str);
return 0;
}
当我运行上述程序时,它会给出以下输出:
Enter the string :
bsalunke
Initial string is : (bsalunke
)
意外字符串存储在str
指针中的原因可能是什么(即它是一个包含许多空格的字符串)?
我在linux上使用gcc 4.1.2版本
答案 0 :(得分:5)
来自getline的手册页
getline()从流中读取整行,存储地址 包含文本的缓冲区为* lineptr。缓冲区是 以null结尾并包含换行符(如果找到)。
我认为这解释了它。它不是一个包含许多空格的字符串,而是一个以新行结尾的字符串。
答案 1 :(得分:0)
程序不起作用,因为您正在编写您不理解的代码。您不能“将字符串存储在指针中”。你需要研究数组和指针。
您试图将数据存储在随机存储器位置,而不为数据分配任何内存。这是完全未定义的行为。