小编klu*_*utt的帖子

void 指针中的字节数

假设我有一个 C 函数:

Func(void* param);
Run Code Online (Sandbox Code Playgroud)

有没有办法知道参数内容的字节数?

c pointers void-pointers

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

使用正则表达式验证电子邮件地址会造成伤害吗?

我听说使用正则表达式验证电子邮件地址是一件坏事,它实际上可能会造成伤害.这是为什么?我认为验证数据永远不会是件坏事.如果您正确执行验证,可能不必要,但绝不是坏事.你能解释一下为什么这是对还是错?如果它可能造成伤害,请举个例子.

regex email validation

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

如何初始化C中堆中的只读内存位置?

考虑以下代码:

#include<stdio.h>

int main()
{
    const char* c = malloc(1);
    *c = 'a';
    printf("%c\n",*c);
}
Run Code Online (Sandbox Code Playgroud)

该代码显然会引发以下编译错误:

file1.c:7:3: error: assignment of read-only location ‘*c’
*c = 'a';
^
Run Code Online (Sandbox Code Playgroud)

如何在堆内存中初始化const变量?

c

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

枚举C中的基本数据类型,以便可以轻松访问大小

是否可以使用for循环在C中获取所有基本数据类型的大小?例如,我们可以这样做吗?

#include <datatypes.h> /* or something else which defines get_data_types() */
#include <stdio.h>

int main() {
    for (int x = 0; x < len(get_data_types()); x++) {
        printf("Size of %s is %d", get_data_types()[x], sizeof(get_data_types()[x]));
    }
 }
Run Code Online (Sandbox Code Playgroud)

我可以通过替换for循环并为int,long等编写单独的语句来枚举所有数据类型.但是,我想知道是否有可能有一个for循环来做同样的事情?

基本上,我试图避免以下情况:

#include <stdio.h>

int main() {
    printf("Size of int is %d", sizeof(int);
    printf("Size of unsigned int is %d", sizeof(unsigned int);
    printf("Size of long is %d", sizeof(long);
    /* etc. */
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

数据类型的兴趣 - ,char,unsigned char, …

c arrays types sizeof

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

有什么办法可以保证段错误?

我知道segfault是未定义行为的常见表现。但是我对此有两个小问题:

  1. 所有的段错误都是未定义的行为吗?

  2. 如果否,是否有任何方法可以确保出现段错误?

什么是细分错误?比我的问题更笼统,没有答案能回答我的任何问题。

c segmentation-fault undefined-behavior

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

谁能解释为什么数组在传递给函数时没有改变

我认为输出应该是 10 10,但它是 10 1 并且不知道为什么。

我尝试分配 arr[0]=55 ,它使我成为 55 idk 为什么会这样。很高兴得到解释

void foo(int arr[])
{
  int i=10;
  arr=&i;
  printf("%d",arr[0]);
}

int main() 
{
  int a[4]={1,2,3,4};
  foo(a);
  printf("%d",a[0]);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的想法:1010 实际 o/p= 101

c gcc

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

从开关C ++退出

#include <iostream>
#include <string>
#include <vector>
#include "Player.h"
using namespace std;

void PlayerMenu();


int main() {


    int z;
    cout << "Please press 0 to see the PLayers Menu. " << endl;
    cin >> z;
    while (z == 0) {
        PlayerMenu();

    }

    cout << " Now You're Functional Lets get started. ";


};
void PlayerMenu()
{
    char ch;
    int num;

    do {
        system("cls");
        cout << "\n\n\n\t Player Menu";
        cout << "\n\n1 Wallet Balance  ";
        cout << "\n\n2 Player Invetory";
        cout << …
Run Code Online (Sandbox Code Playgroud)

c++

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

如何在没有最高有效数字的情况下在 C 中格式化浮点数?

我想输出数据看起来像这样

input : 1999.99
output: 999.99 
Run Code Online (Sandbox Code Playgroud)

我想去掉更重要的数字。

我已经使用过这样的 C 格式

%.2f  ==> 10.44, 23.23, 5.67
Run Code Online (Sandbox Code Playgroud)

现在我需要在小数点前切割。

有什么解决办法吗?

c format double numbers

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

在这种情况下首选递归吗?

假设我们有一个字符串,我们想以相反的顺序打印它。在这种情况下,递归似乎是更快的选择,因为字符串被“遍历”一次,而通常的循环方法会“遍历”两次。

对于这类问题,有什么理由不喜欢递归?在大输入的情况下,递归是否会造成某种不利?

考虑以下代码:

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

void printReverse_1(const char *str)
{
    if (!*str)
        return;

    printReverse_1(str + 1);
    putchar(*str);
}

void printReverse_2(const char *str)
{
    const char *tmp = str + strlen(str) - 1;

    while (tmp > str)
    {
        putchar(*tmp--);
    }
    putchar(*tmp);
}

int main(void)
{
    printReverse_1("abc");
    putchar('\n');

    printReverse_2("abc");
    putchar('\n');

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c recursion performance

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

如何在不使用字符串的情况下将密码从 java 发送到 postgresql?

我知道这char[]String密码更可取,因为它String是不可变的。但是我一直无法弄清楚如何将它传递给准备好的语句。考虑这个代码:

Connection con = MyDBManager.connect();
PreparedStatement stm = con.prepareStatement(
    "INSERT INTO my_table(username, password) VALUES(? ?)");
String username = "Jonny";
stm.setString(username);
char[] password = new char[] {'a','b','c','d'};
stm.SetString(password.toString());
Run Code Online (Sandbox Code Playgroud)

它有效,但我怀疑调用会password.toString()破坏使用 a 的全部目的char[],那么我该怎么办?

是的,我知道密码不应该以明文形式存储。密码是散列的,但我仍然想使用char[]

这似乎有效,而且我还将数据库中的字段从 更改textbytea并且(我认为)理论上应该提供与char[]预期相同的好处,但我强烈感到我做得不对:

byte[] password = new byte[] {'a','b','c','d'};
stm.SetBytes(password);
Run Code Online (Sandbox Code Playgroud)

也许我的方法完全错误,但我的要求是密码哈希永远不应存在于不可变对象中。我对将其发送到数据库的其他方式持开放态度PreparedStatement

回复评论:

我从@rzwitserloot 的回答中学到了很多东西,但不幸的是它没有帮助。永远不要在不可变对象中使用密码哈希是不可协商的要求。

java passwords postgresql password-protection

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