标签: fgets

为什么获取功能如此危险以至于不应该使用它?

当我尝试编译使用gets()GCC函数的C代码时,

我明白了

警告:

(.text + 0x34):警告:`gets'函数很危险,不应该使用.

我记得这与堆栈保护和安全性有关,但我不确定为什么?

有人可以帮我删除这个警告并解释为什么会有这样的使用警告gets()

如果gets()是如此危险,为什么我们不能删除它?

c gets fgets buffer-overflow

210
推荐指数
9
解决办法
14万
查看次数

从fgets()输入中删除尾随换行符

我试图从用户那里获取一些数据并将其发送到gcc中的另一个函数.代码是这样的.

printf("Enter your Name: ");
if (!(fgets(Name, sizeof Name, stdin) != NULL)) {
    fprintf(stderr, "Error reading Name.\n");
    exit(1);
}
Run Code Online (Sandbox Code Playgroud)

但是,我发现它最后有一个换行符\n.所以,如果我输入John它最终发送John\n.如何删除它\n并发送正确的字符串.

c string gcc newline fgets

210
推荐指数
5
解决办法
30万
查看次数

将每行txt文件读取到新的数组元素

我试图将文本文件的每一行读入一个数组,并将每一行放在一个新元素中.
我的代码到目前为止.

<?php
$file = fopen("members.txt", "r");
$i = 0;
while (!feof($file)) {

$line_of_text = fgets($file);
$members = explode('\n', $line_of_text);
fclose($file);

?>
Run Code Online (Sandbox Code Playgroud)

php arrays fgets text-files

101
推荐指数
7
解决办法
23万
查看次数

C - scanf()vs gets()vs fgets()

我一直在做一个相当简单的程序,将一串字符(假设输入数字)转换为整数.

我改完之后,我注意到一些非常奇特的"错误",我不能回答大多是因我有限的知识如何,scanf(),gets()fgets()职能的工作.(尽管我读过很多文学作品.)

所以没有写太多文本,这里是程序的代码:

#include <stdio.h>

#define MAX 100

int CharToInt(const char *);

int main()
{
    char str[MAX];

    printf(" Enter some numbers (no spaces): ");
    gets(str);
//  fgets(str, sizeof(str), stdin);
//  scanf("%s", str);

    printf(" Entered number is: %d\n", CharToInt(str));

    return 0;
}

int CharToInt(const char *s)
{
    int i, result, temp;

    result = 0;
    i = 0;

    while(*(s+i) != '\0')
    {
        temp = *(s+i) & 15;
        result = (temp + result) * 10;
        i++;
    } …
Run Code Online (Sandbox Code Playgroud)

c gets scanf fgets

36
推荐指数
4
解决办法
9万
查看次数

scanf()和fgets()之间的区别

我想知道fgets()和之间有什么区别scanf().我使用C作为我的平台.

c scanf fgets

33
推荐指数
3
解决办法
5万
查看次数

fgets()和fread() - 有什么区别?

我理解和之间的差异fgets(),fgetss()但我没有区别fgets()fread(),有人可以澄清这个问题吗?哪一个更快?谢谢!

php smtp stream fgets fread

32
推荐指数
1
解决办法
3万
查看次数

如何用fgets()从stdin读取?

我写了下面的代码来从终端窗口读取一行,问题是代码陷入无限循环.行/句子的长度是未定义的,因此我计划将其分成几部分读入缓冲区,然后将其连接到另一个字符串,该字符串可以通过realloc相应的方式进行扩展.有人可以发现我的错误或建议更好的方法来实现这个目标吗?

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

#define BUFFERSIZE 10

int main (int argc, char *argv[])
{
    char buffer[BUFFERSIZE];
    printf("Enter a message: \n");
    while(fgets(buffer, BUFFERSIZE , stdin) != NULL)
    {
        printf("%s\n", buffer);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c stdin fgets

31
推荐指数
2
解决办法
18万
查看次数

得到的安全替代方案

我想从标准输入中读取整行,包括两个单词之间的空格.

当使用get on gcc时,我收到以下消息:

send.c:(.text+0x2a): warning: the `gets' function is dangerous and should not be used.
Run Code Online (Sandbox Code Playgroud)

什么是更好的选择?

c c++ gets fgets

25
推荐指数
0
解决办法
2万
查看次数

fseek()一行,而不是字节?

我有一个逐行解析大文件的脚本.当遇到无法处理的错误时,它会停止,通知我们解析的最后一行.

这真的是寻找文件中特定行的最佳/唯一方法吗?(fseek()在我的情况下不可用.)

<?php

for ($i = 0; $i < 100000; $i++)
    fgets($fp); // just discard this
Run Code Online (Sandbox Code Playgroud)

我使用它没有问题,它足够快 - 它只是感觉有点脏.根据我对底层代码的了解,我不认为有更好的方法可以做到这一点.

php file fgets

18
推荐指数
2
解决办法
2万
查看次数

php函数中ftell的输出

这是我的代码:

<?php
    $url="http://www.sina.com.cn";
    $handle = @fopen($url, "r");
    $len=get_headers($url,true);
    print_r($len);
    echo $len['Content-Length']."\n";
    if ($handle) {
        while (($buffer = fgets($handle,1024)) !== false) {
            echo ftell($handle)."\n";
            fseek($handle,200000,SEEK_CUR);
            echo ftell($handle)."\n";
        }
        if (!feof($handle)) {
            echo "Error: unexpected fgets() fail\n";
        }
        fclose($handle);
    }
?>
Run Code Online (Sandbox Code Playgroud)

结果如下:

    Array
(
    [0] => HTTP/1.1 200 OK
    [Content-Type] => text/html
    [Vary] => Accept-Encoding
    [X-Powered-By] => shci_v1.03
    [Server] => nginx
    [Date] => Thu, 24 Dec 2015 04:03:39 GMT
    [Last-Modified] => Thu, 24 Dec 2015 04:01:28 GMT
    [Expires] => Thu, 24 Dec …
Run Code Online (Sandbox Code Playgroud)

php fseek ftell fgets

18
推荐指数
2
解决办法
959
查看次数

标签 统计

fgets ×10

c ×6

php ×4

gets ×3

scanf ×2

arrays ×1

buffer-overflow ×1

c++ ×1

file ×1

fread ×1

fseek ×1

ftell ×1

gcc ×1

newline ×1

smtp ×1

stdin ×1

stream ×1

string ×1

text-files ×1