小编Inn*_*per的帖子

混淆嵌入式应用程序的返回值

我正在尝试用C++调用另一个应用程序.由于输入文件中的语法错误,嵌入式应用程序会受到分段错误的影响,因此外部程序将负责重新运行内部和记录失败.

我的直接想法是依靠内部程序的返回值.所以我开始尝试这个.我写了一个虚拟程序Inner.cpp:

#include <iostream>

int main()
{
    std::cout << "Inner" << std::endl;
    return 22;
}
Run Code Online (Sandbox Code Playgroud)

然后,我写了这个Outer.cpp:

#include <cstdlib>
#include <iostream>

int main()
{
    int retval = system("~/Inner");
    std::cout << "Returned: " << retval << std::endl;   
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

得到这个令人困惑的输出:

Inner
Returned: 5632
Run Code Online (Sandbox Code Playgroud)

所以我开始阅读.我很快发现,只有8个LS位通过,这些位经过无符号处理.但这不仅意味着不使用255以上的值吗?为什么我会得到这个奇怪的价值?

所以我开始查看这些内容.

What I expected: 22 -> 0000 0000 0000 0000 0000 0000 0001 0110
What I got:    5632 -> 0000 0000 0000 0000 0001 0110 0000 0000
Run Code Online (Sandbox Code Playgroud)

哇,这是相同的模式,只是转移.事实上,当我修改我的行时:

std::cout << "Returned: " << …
Run Code Online (Sandbox Code Playgroud)

c++ embedding segmentation-fault

5
推荐指数
1
解决办法
93
查看次数

sscanf出人意料的结果

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

int main()
{
   char buffer[32];
   char c;
   int i;
   printf("input: ");
   fgets(buffer, 32, stdin);
   printf("items filled: %d\n", sscanf("%c%d\n", &c, &i));
   printf("%c%d\n", c, i);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

当键入一个字符后跟一个数字"f7"时,我希望"f"进入变量c,而"7"进入变量i.出于某种原因,sscanf()无法填充两者,我得到了他们的初始垃圾值.我究竟做错了什么?

c scanf

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

在wget bash命令中转义

wget -q -T 60 --retry-connrefused -t 5 --waitretry=60 --user=ftp2.company.com|company2013 --password=!company2013 -N -P data/parser/company/ ftp://ftp2.company.com/Production/somedata.zip

我在使用此命令时遇到问题,因为密码包含感叹号.我尝试用\来转义,尝试使用单引号,然后输出:

wget: missing URL

要么

bash: !company2013: event not found

这真是令人失望......

bash ubuntu escaping wget

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

序列化时我犯了什么错误?

这会导致运行时出现序列化异常。这只是一个演示项目,用于测试执行此操作的最佳方法。我包括了主要方法和我试图序列化的类。

忽略:我真的无法添加更多细节,我已经描述了问题,附上了代码,这个“请添加更多细节”的事情是有史以来最愚蠢的事情。让我发一下吧。

Data toSend = new Data();
toSend.Output();

///SERIALIZE

BinaryFormatter formatter = new BinaryFormatter();
Stream streamOut = File.OpenWrite("file");
formatter.Serialize(streamOut, toSend);
streamOut.Close();


Console.WriteLine("----------------------------");
///DESERIALIZE

Stream streamIn = File.OpenRead("file");
Object received = formatter.Deserialize(streamIn);
Data toReceive = (Data)received;
toReceive.Output();

class Data : ISerializable
{
    int integerData;
    string stringData;
    bool booleanData;
    int shouldnotbeserialized;

    public Data()
    {
        integerData = 1;
        stringData = "Hello";
        booleanData = true;
        shouldnotbeserialized = 55;
    }

    //To deserialize
    public Data(SerializationInfo info, StreamingContext context)
    {
        integerData = info.GetInt32("theint");
        stringData = info.GetString("thestring");
        booleanData …
Run Code Online (Sandbox Code Playgroud)

c# serialization

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

哪个是双向if-else语句的最佳/标准练习

我想知道在这些情况下什么是更好的解决方案,或者编码标准在公司中对此有何评价?

        if (this.State == NetworkState.Server)
        {
            //...
        }
        else if (this.State == NetworkState.Client)
        {
            //...
        }
        else
        {
            //some error throwing or printing
        }
Run Code Online (Sandbox Code Playgroud)

要么

        if (this.State == NetworkState.Server)
        {
            //...
        }          
        else
        {
            //sure its client here
        }
Run Code Online (Sandbox Code Playgroud)

我觉得第一个更具可读性,因为你可以清楚地看到客户端是另一个状态,但它也使代码更长,有时我做的不仅仅是打印"这应该永远不会发生"第三种情况.有没有明确的更好的解决方案?

.net c#

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

以下sql语句有什么不同吗?

SELECT * FROM table t
SELECT t.* FROM table t
Run Code Online (Sandbox Code Playgroud)

我尝试了它并产生了相同的结果,但我想确定因为我正在重构使用第二个版本的一段代码,我很惊讶因为它写的时间更长,而且更简单.

这里有隐藏的东西吗?

MySQL版本:5.5.29-0ubuntu0.12.04.2(Ubuntu)

mysql sql

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

标签 统计

c# ×2

.net ×1

bash ×1

c ×1

c++ ×1

embedding ×1

escaping ×1

mysql ×1

scanf ×1

segmentation-fault ×1

serialization ×1

sql ×1

ubuntu ×1

wget ×1