小编Ant*_*ala的帖子

有没有办法在 C 中倒带 stdin?

所以我的代码应该通过命令行查看文本文件

 ./program < text.txt
Run Code Online (Sandbox Code Playgroud)

这种执行程序的方式对于我的目的很重要。

但在经历过一次之后,所有其他方法都已经查看了文本文件的末尾。

我试图浏览提供的文本文件,但一旦函数读取一次,指针可能已经停留在文件末尾,其他函数不再工作。

所以就有了最基本的使用这个的函数。一旦我尝试使用相同的 for 循环的任何其他功能,它就不再工作了。我想它是指针,但我还没有成功找到刷新它的方法。

void writeOut()
{
    char line[100];
    for(; fgets(line, 100, stdin) != NULL;)
    {
        fprintf(stdout,"%s", line);

    }
    fprintf(stdout,"\n");
}
Run Code Online (Sandbox Code Playgroud)

我希望能够多次读取同一个文件并能够“刷新” fgets() 的内存。

感谢您提供任何有用的意见

c

0
推荐指数
1
解决办法
2678
查看次数

在 C++ 类中初始化 C 数组

我有一个包含私有 C 数组的 C++ 类,如下所示,

class DataObject {
    private:
        double* data_array_;
};
Run Code Online (Sandbox Code Playgroud)

由于程序中未显示的其他部分的限制,我不能使用 a std::vector<double>,不能使用DataObject构造函数来初始化数组(初始化列表?),并且不想在堆上分配数组。因此,我必须在一个init()函数中初始化数组,该函数将数组元素的数量作为参数。到目前为止,我已经尝试了以下方法,但不幸的是它们似乎不起作用:

尝试 1:

void DataObject::init(unsigned int num_elements) {
    data_array_[num_elements];
}
Run Code Online (Sandbox Code Playgroud)

尝试 2:

void DataObject::init(unsigned int num_elements) {
    data_array_ = double[num_elements];
}
Run Code Online (Sandbox Code Playgroud)

因此,我想知道鉴于上述限制,是否还有另一种方法来初始化堆栈分配的私有 C 数组。

c++ arrays

0
推荐指数
1
解决办法
169
查看次数

One else for multiple if conditions

I created some functions which return 1 if all went well and 0 if there was an error. Now, I need to execute each of these functions in a defined order and verify the return values. If one of them returns 0, I need to reboot immediately, without invoking any of the subsequent functions.

I intended to use multiple ifs but with one else:

if function_1():
    if function_2():
        if function_3():
            print "Everything went well"
else:
    reboot()
Run Code Online (Sandbox Code Playgroud)

but it …

python if-statement short-circuiting

-1
推荐指数
1
解决办法
4000
查看次数

ValueError:AES密钥必须为16、24或32个字节长PyCrypto 2.7a1

我正在为我的学校项目编程,上面有一个问题。这是我的代码:

def aes():
    #aes
    os.system('cls')
    print('1. Encrypt')
    print('2. Decrypt')

    c = input('Your choice:')

    if int(c) == 1:
        #cipher
        os.system('cls')
        print("Let's encrypt, alright")
        print('Input a text to be encrypted')
        text = input()

        f = open('plaintext.txt', 'w')
        f.write(text)
        f.close()

        BLOCK_SIZE = 32
        PADDING = '{'
        pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
        EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s)))
        secret = os.urandom(BLOCK_SIZE)

        f = open('aeskey.txt', 'w')
        f.write(str(secret))
        f.close()

        f = open('plaintext.txt', 'r')
        privateInfo = f.read()
        f.close()

        cipher …
Run Code Online (Sandbox Code Playgroud)

python cryptography pycrypto python-3.x

-1
推荐指数
1
解决办法
6813
查看次数

Python 2.7龟错误

我遇到了龟模块的问题.

当我在文件中使用它时:

import turtle
t = turtle.Pen
Run Code Online (Sandbox Code Playgroud)

它出现了这个错误:

Traceback (most recent call last):
  File "C:/Users/admin/SkyDrive/Documents/turtle command game", line 1, in <module>
    import turtle
  File "C:/Users/admin/SkyDrive/Documents\turtle.py", line 8, in <module>
    p = turtle.pen()
AttributeError: 'module' object has no attribute 'pen'
Run Code Online (Sandbox Code Playgroud)

但是当我在python shell中做同样的事情时,它工作正常.我复制并粘贴它们并确保它们是相同的.

我也尝试过:

from turtle import *
t = Pen()
Run Code Online (Sandbox Code Playgroud)

但它返回了相同的错误,当我在shell中执行该操作时,一切都顺利进行.

我甚至尝试Pen()直接在文件中导入函数:

from turtle import Pen
t = Pen()
Run Code Online (Sandbox Code Playgroud)

但它有相同的错误,但是当我在shell中执行它时,它工作.

我有python 2.7.7和Windows 8.1

谁能告诉我这里发生了什么?

任何帮助,将不胜感激.

python module turtle-graphics

-2
推荐指数
1
解决办法
3879
查看次数

exec()和传递给Python脚本的变量的问题

在HTML中编写一些简单的嵌入式PHP来执行python脚本,该脚本使用一些循环来根据HTML表单中多个文件输入的可能性多次运行脚本.它适用于单数,但就目前而言,当运行多个文件时,它似乎重复一些,并且仔细检查,似乎第一次被python脚本收到的变量不正确.我不知道它为什么这样做,它可能是非常明显的.所有帮助赞赏.

$len = count($_FILES["inputFile"]["name"]);
 echo "length";
 echo $len;

 for($i = 0; $i < $len; $i++){
    $dataIn = $_FILES["inputFile"]["tmp_name"][$i];
    $originalName = $_FILES["inputFile"]["name"][$i];
    echo "TMP Name:";
    echo $dataIn;
    echo "OriginalName";
    echo $originalName;
    exec("python /home/will/public_html/OrderAnalyser.py '$dataIn' '$originalName' 2>&1",$output);
    foreach ($output as $out){
        echo $out;
        echo "<br />"; 
    }
 }
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

    Executing...

length2TMP Name:/var/www/tmp/phpHzJFtQOriginalNamemicro_b001.jsonAnalysis Starting on file:
Input File: /var/www/tmp/phpHzJFtQ
Original Name: micro_b001.json
"nodeID":20,

firstNode:
20
Finished Finding Argument Order,
List is as follows:
['20', '21', '22', '23', '24']
Top Node is:
24


There …
Run Code Online (Sandbox Code Playgroud)

php

-2
推荐指数
1
解决办法
54
查看次数

在或运算符后面有换行符时出现语法错误

还行吧:

if 'something' in data['meta']:
  <do something>
Run Code Online (Sandbox Code Playgroud)

这是语法错误.为什么?

if ('something' in data['meta']) or
  ('something_else' in data['meta']):
    <do something>
Run Code Online (Sandbox Code Playgroud)

口译员解决了这个问题:

  File "test.py", line 1
    if ('something' in data['meta']) or
                                      ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

python

-2
推荐指数
1
解决办法
2415
查看次数

8051 16位加法/乘法结果16位而不是32位

我有个问题.在此程序中,变量x应设置为0x10000,但在两个操作中结果为0.

这不是主程序,而是查找错误原因的测试.我目前正在使用十六进制输入制作64位乘法器.我使用Keil和Proteus进行了16位乘法运算

int main() {
    unsigned long int x = 0;
    x = 0x8000 * 0x2;
    x = 0x8000 + 0x8000;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c 16-bit integer-promotion integer-arithmetic

-2
推荐指数
1
解决办法
443
查看次数

Ansichar和char有什么区别?

我最近遇到了这种数据类型不匹配的问题.这是我以前从未见过的.我希望有人可以解释这些是什么以及它们有何不同.

我得到的错误是F2063.[DCC错误] E2010不兼容类型:'AnsiChar'和'Char'

delphi variables types char widechar

-3
推荐指数
1
解决办法
3931
查看次数

C实现python的len函数的解释

当我遇到len函数的C实现时,我正在阅读有关python内置函数的实现的信息。

static PyObject *
builtin_len(PyObject *module, PyObject *obj)
/*[clinic end generated code: output=fa7a270d314dfb6c input=bc55598da9e9c9b5]*/
{
Py_ssize_t res;

res = PyObject_Size(obj);
if (res < 0) {
    assert(PyErr_Occurred());
    return NULL;
}
return PyLong_FromSsize_t(res);
Run Code Online (Sandbox Code Playgroud)

我无法理解这段代码中发生了什么。我不知道C是如何工作的。有人可以解释这段代码在做什么吗?

我从https://github.com/python/cpython/blob/master/Python/bltinmodule.c获取了代码

编辑:我只是很好奇len函数是如此之快,在这段代码中绊倒了。我只想知道为什么使用函数PyObject_Size检查对象的大小为零,然后使用PyLong_FromSsize_t返回实际大小。

c python cpython python-internals

-7
推荐指数
1
解决办法
213
查看次数

什么是C++中的`string`

在Python中,有一个名为的类型string,string与C++中的python相同的是什么?

c++ string

-32
推荐指数
1
解决办法
912
查看次数