2

我正在研究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 版本

4

2 回答 2

5

从 getline 的手册页

getline() 从流中读取整行,将包含文本的缓冲区的地址存储到 *lineptr 中。缓冲区以空值结尾并包括换行符(如果找到)。

我认为这可以解释。它不是一个有很多空格的字符串,它是一个以换行符结尾的字符串。

于 2013-03-07T10:07:16.847 回答
0

该程序不起作用,因为您正在编写您不理解的代码。您不能“将字符串存储在指针中”。你需要学习数组和指针。

您正在尝试将数据存储在随机内存位置,而不为数据分配任何内存。这是完全未定义的行为。

于 2013-03-07T10:13:50.770 回答