小编Ily*_*lya的帖子

什么是memcpy试图在C代码中实现

我是C中的一个完整的新手,但我已经被分配了解C代码的工作.谁能帮助理解以下代码?

memcpy (out, &field_id, sizeof(field_id));
Run Code Online (Sandbox Code Playgroud)

以下是field_id和out的数据类型:

char* out = *out_ptr;
short field_id = column->column_index;
Run Code Online (Sandbox Code Playgroud)

据我所知,命令是将sizeof(field_id)字符数复制&field到out指针.但这对我没有任何意义.另外,据我所知,C不是OOP语言,为什么我们使用类似的东西column->column_index似乎我们试图访问column_index一些名为的对象的属性column.

我拥有Java,Python,C#的高级编程经验,所以即使你没有详细介绍我也能理解,只有提示或链接到有用的文章也可以.

c

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

如何在屏幕上显示输出?

我正在练习Alex Allain的书中的数组和指针.

#include <iostream>
#include <fstream>
using namespace std;

int *growArray (int* p_values, int cur_size);

int main ()
{
  int next_element = 0;
  int size = 10;
  int *p_values = new int[ size ];
  int val;
  cout << "Please enter a number: ";
  cin >> val;
  while ( val > 0 )
  {
    if ( size == next_element + 1 )
    {
      // now all we need to do is implement growArray
      p_values = growArray( p_values, size );
    }
    p_values[ …
Run Code Online (Sandbox Code Playgroud)

c++ arrays

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

使用sscanf阅读文本

我对sscanf函数的使用有疑问.

#include  <iostream>
#include  <stdio.h>

int main()
{
    char a[3];
    char b[4];
    const char* p = "aaaaaaaaaaaaaaaaaa bbbbbb";
    sscanf(p, "%2s %3s", a, b);
    std::cout << a << std::endl;
    std::cout << b << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

期望的输出是:aa bbb

实际输出是:aa aaa

c c++ scanf

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

传递方法参数时防止数组超出范围

首先是第一件事.我知道没有办法直接找出方法中传入数组的大小,因为它们是作为指针接收的.我面临的情况类似但性质不同.

我有一个像这样的方法:

void method( int no_of_elements, int arr[])
{
   /* checking if array has 'no_of_elements' of elements.
}
Run Code Online (Sandbox Code Playgroud)

我想检查整数数组arr[]是否有no_of_elements.基于此,我的方法将进一步处理.我知道它几乎听起来像找到的大小arr[].至少这是我能想到检查我的要求的唯一方法.任何解决这个问题的方法都将受到赞赏.

c memory arrays

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

如何定义字符串数组列表?

我想定义一个列表,其元素是一个3元素数组.下面的代码似乎没问题: List<dynamic[]> bb = null; 但是当我尝试时: List<dynamic[3]> bb = null;

它抛出错误.当然我可以为它创建一个类/结构.但有没有办法直接定义它?

c#

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

C - 按位操作

我对C很新,我试图理解CI中的按位运算符在我面前找到这个代码(将2转换为37)

int main(void)
{
    int x = 2;
    x = (x<<x<<x) | (x<<x<<x) | (x << !!x) | !!x ;
    printf("%d\n" , x );  // prints 37 
}
Run Code Online (Sandbox Code Playgroud)

现在这是我第一次看到这样的东西 (x<<x<<x),我不明白它在做什么.任何人都可以详细解释代码中的第二行吗?

c bit-manipulation bit-shift bitwise-operators

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

为什么我的程序在调试时会崩溃?

我已经开始编写一个程序,可以在一个结构中读取和存储团队信息和存储,重新排序并打印结果.

首先,我正在尝试阅读团队名称并将其存储在结构中的成员中,然后阅读团队分数并将其存储在另一个成员中.

但是,只要我调试文件,它就会崩溃.它甚至没有正确启动.我收到这个错误

PA2.exe中0xFEFEFEFE处的未处理异常:0xC0000005访问冲突执行位置0xFEFEFEFE.

我已经回溯到足以弄清楚它是在while循环中的某个地方,但无法弄清楚它有什么问题.

我正在使用visual studio 2012,当我构建它时我没有错误.

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

struct team
{
    char name[20];
    int no_games;
    int points;
    int goals_scored;
    int goals_let;
};


int main(void)
{
    FILE *input2a;
    FILE *input2b;
    int error1;
    int error2;
    int i;
    char team1_name[20];
    char team2_name[20];
    int team1_goals;
    int team2_goals;
    struct team teamlist[20];

    error1 = fopen_s(&input2a, "C:\\Users\\New PC\\Desktop\\input2a.dat", "r");

    i = 0;
    while (i < 20)
    {
        i ++;
        fscanf_s(input2a, "%s", teamlist[i].name);
    }

    error2 = fopen_s(&input2b, "C:\\Users\\New PC\\Desktop\\input2b.dat", "r");

    while (fscanf_s(input2b, …
Run Code Online (Sandbox Code Playgroud)

c crash structure scanf

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