c有关的问题


如何在C中使用rand() 或/dev/random创建大小为 64k w/o的随机char字符串?

我正在寻找创建 64k大小的有点随机字符串的方法。
但是我也希望这个速度快。我已经尝试了以下方法:
A) 从/dev/随机读取 -- 这太慢了
B) 呼叫r.


C中的指针及其作为数组的解释

我试图在邻接列表表示中保存一个图,因此,我为此目的使用指针。编写整个代码片段并不富有成效,因此我正在编写代码sni.


为什么我得到的答案是 “奇怪” 而不是 “偶数”

为什么我得到的答案是 “奇怪” 而不是 “偶数”?
# Include <stdio.h>
# 定义奇数 (x) x % 2?0:1
Int main()
{
Int a = 5;
If (ODD(a + 1))
Printf (“偶数”);
其他
Printf ("odd.


C编程 # 定义?

可能重复:
有人能解释这些未定义的行为吗 (i = i i,i = i等…)
# Include <stdio.h>
# Include <conio.h>
# Define SQ(x) x * x
空主 ()
{
我.


GCC内联汇编来操纵所有寄存器?

我正在尝试在C (GCC 4.6.3,x86 (64 位CPU),Ubuntu 12.04 64 位) 中进行一些程序集调用,以零出寄存器值并设置堆栈指针,并最终调用跳转指令。
这是.


C - division不起作用

我实际上完全卡住了,我不明白这个函数的行为:
# Include <stdio.h>
Typedef struct s_resolution
{
Int x;
Int y;
Float fx;
Float fy;
} T_resolution;


大于运算符的按位运算等效

我正在研究一个函数,基本上可以看到两个int中的哪一个更大。传递的参数是 2 个 32 位整数。诀窍是唯一允许的操作员是!~ | & <.


如何告诉gcc不对齐堆栈上的函数参数?

我正在尝试将 68000 处理器的可执行文件反编译到C代码中,用C函数逐个替换原来的子程序。
我面临的问题是,我不知道如何使gcc.


“切换” 比 “如果” 快吗?

Switch语句实际上比if语句快吗?
我用/Ox标志在Visual Studio 2010 的x64 C编译器上运行下面的代码:
# Include <stdlib.h>
# Include <stdio.h>
# 包括……


堆栈上的运行时内存分配

我想知道关于堆栈区域上的运行时内存分配以及它与堆区域上的运行时内存分配有何不同。
我知道如何通过使用库函数来分配内存。
# 包括.


Printf和co如何区分float和double

由于它不是强类型,我认为它只是选择了正确的内存大小,并根据参数的类型来解释它。但是float和double都使用 % f,它们的大小不同。
P.S.
我.


哪个C数据类型可以表示 40 位二进制数?

我需要表示一个 40 位二进制数。应该使用哪个C数据类型来处理这个?


打印浮点变量

下面是我的代码和程序输出:
# Include <stdio.h>
Int main()
{
浮动工资;
Printf (“请输入工资:”);
Scanf (“% f”,& 工资);
Printf ("你的工资是: % f \ n",工资);
}


用 64 或 32 位编译时的不同行为或sqrt

我正在使用数学库中的sqrt() 函数,当我使用-m64 构建 64 位时,我得到了正确的结果,但是当我构建 32 位时,我有非常不一致的行为。
例如,关于 64 位
做.


Linux内核: 可能 () vs不太可能 ()

这两种方法似乎在linux内核代码中被广泛使用。我知道分支预测的基础,但我想知道这两个函数如何影响if() 的操作


有没有可能通过mmap的匿名记忆 “打孔”?

考虑一个程序,它使用大量的大致页面大小的内存区域 (例如 64 kb左右),其中每个都是相当短暂的。(在我的特殊情况下,这些是绿色的备用堆栈


具有变量输入的函数指针

在C中,我试图将单变量函数传递到优化例程 (optimization_routine) 中。优化例程将指向单个浮点函数的指针func1ptr作为输入


在x86 上的 32 位块上实现类似学校的划分

假设我得到了两个大数字 (定义如下),和
我想通过后退来实现对他们的划分
到x86 可用算术
0008768376 - 1653656387 - 0437673667 - 0123767614 - 1039873878-


C警告在函数调用中缺少哨兵

这是我的警告。
函数调用中缺少哨兵
我怎样才能移除它。
我正在使用linux和gcc编译器。


在C中,我应该定义 (不声明/原型) 一个不带参数的函数,void或空列表?

这个问题可能有也可能没有副本,尽管我试图找到一个,但每个人的答案似乎都只是指声明/原型。他们指定一个定义voi.


强制转换/赋值中的结构类型不兼容?

这是这个问题的后续。
我试图避免使用显式typedef通过这样的强制转换将一个数组复制到另一个数组:
# Include <stdio.h>
Int main(void)
{
Int i;
Int.


Gcc collect2: 致命错误: 找不到 'ld'

我正在学习在 http://wiki.osdev.org/Bare_Bones 上制作操作系统的教程。当我尝试使用这个命令链接boot.o和kernel.o时: i686-elf-gcc -T linker.ld -o myos.bin -ffreestanding -.


嵌套在union中的结构中的公共初始序列-C标准中的定义

在C11 标准中,由单个联合中嵌套的结构共享的公共初始序列有以下定义:
6.5.2.3/6

一个特殊的保证是为了简化了……


索引与指针

我正在使用元素数组,其中许多相互引用,我假设在这种情况下使用指针更有效。
但在某些情况下,我需要知道一个元素的索引,我有


如何比较C程序中的字符串

我有一个关于如何在if语句中比较字符串的问题。我正在从Python移动到C,比较字符串在Python中很容易,但是在C中我该怎么做呢?
我的程序是:
Printf ("进入.


在printf % s和for循环 % c之间更快

我想知道在以下两者之间处理哪个更好/更快:
Printf ("% s",foo);

For (int i = 0; i < len; i + +)
Printf ('% c',foo[i]);'
我注意到输出并不总是.


在用fgets() 填充后,如何从字符串数组中删除newline “\ n”?

我正在使用的阵列是:
Char arr[91][12];
所以我填充我的数组从一个文件使用for循环像这样:
For (i = 0; fgets(arr[i],12,inFile); i ){}
当我想打印任何东西时.


Int (* func)() 在C中做什么?

这条线在C中做什么?
Int (* func)();
我从以下程序中提取它应该执行字节代码 (汇编指令转换为相应的字节)
Char co.


C中的序列点和副作用

在这个C-FAQ中给出了关于序列点;
标准规定;
在上一个和下一个序列点之间,对象的存储值最多应被evalu修改一次.


如何在c编程中用 “字符串” 替换此类型 “int”?

我正在使用dev c。这是一个愚蠢的程序,要求正确的键来显示文本。这个程序与类型 “int” (只是数字) 完美地工作:
# Include <stdio.h>
# 包括 <coni.


_ _ 属性 _ _ ((_ _ 对齐 _ _)) 不使用静态变量

这已经让我发疯好几天了。我不能得到一个数组对齐到 16,如果我声明为静态。
任何帮助都非常感谢。
修订版:
# Include <stdio.h>
# Include <assert.


C编译器是否有义务始终从内存重新加载const值?

我有一个const变量在我的嵌入式C程序。它在程序代码中用 0 定义和初始化。它通过链接器脚本放置在一个特殊的ROM区域。可以改变特殊的内容.


有效地将无符号值除以 2 的幂,舍入

我想实现unsigneda整数除法由二的任意幂,四舍五入,有效。所以我想要的,数学上,是天花板 (p/q)0。在C中,strawman实现,其中doe.


为什么有些文件指针在 64 位操作系统上有 28 位地址?

我是编程新手,有一个不重要但令人困惑的问题困扰着我。
让我先发布我的代码:
文件 * fp;
Int i;
Fp = fopen("test_data.txt","r");
Printf ("i的地址 = %.


以毫秒为单位获取日期和时间

我想创建一个函数,它将用当前日期和时间填充一个结构,例如:
Typedef struct DateAndTime
{
Int年;
Int月;
Int日;
Int小时;
Int minu.


在C # 中释放一个结构内的char数组。

我有一个包含字符串 (char数组) 数组和数组的最大容量的int的结构。
Typedef struct ArrayList
{
Char * * 数组;
Int容量;
}
数组是


如何在编译/链接时使用地址进行计算?

我写了一些初始化IDT的代码,它将 32 位地址存储在两个不相邻的 16 位半部。IDT可以存储在任何地方,你通过运行LIDT指令告诉CPU在哪里.


如何在debian/ubuntu上编写系统调用

我正在尝试编写自己的系统调用。它只会返回当前时间。我知道我应该做什么的概念,我确实经历了几个这样的链接:
实现一个系统.


奇怪的c左移

我试图在c中做左移位。
Int a = 32;
Printf ("% d \ n",~ 0 << a);
Printf ("% d \ n",~ 0 << 32);
所以我运行 2 printf() 以上,结果是不同的。我使用dev-C + +。.


访问任意地址,不获取segfault

据我所知,每当程序试图访问未经授权的内存时,都会引发segfault。
下面的代码为p分配一个one-int内存块,然后尝试在某个un.


如何在二进制代码中查看编译后的C代码?

编译器就是接受这段代码,并将其翻译成机器代码
如何在二进制代码中编译后看到原始的C代码?


Visual Studio 2017 是否完全支持C99?

Visual Studio的最新版本已经改进了对c99 的支持。最新版VS2017 现在是否支持C99 的全部?
如果没有,C99 还有哪些功能缺失?


C getline函数未按指定读取行

我需要getline() 来读取我的浏览器发送到我正在编程的web服务器的请求头。这是getMessage函数,它应该执行该任务:
Char * getMessage(int fd) {
文件 *


C中的stdarg和printf()

<Stdarg.h> 头文件用于使函数接受未定义数量的参数,对吗?
因此,<stdio.h> 的printf() 函数必须使用 <stdarg.h> 接受avariable


“Do {. } while (0)” 在内核代码中到底做了什么?

可能的重复:
当我们定义一个宏时,do while(0) 有什么用?
为什么有时在C/C宏中存在无意义的do/while和if/else语句?
C多行宏: do/w.


获得比某个数字少 2 的幂的最快方法是什么?

我正在使用这个逻辑:
While ((chase<<( n))< num) ;
其中chase = 1,n = 0 最初,num是我想找到的 2 的幂小于它的值。
循环后I


编译gcc的问题。链接时的s代码

第一次在这里,我运行Kali linux 64 位,我是一个linux新手和一个新的ASM.所以我在C中拉了一个代码,它工作得非常好.下面是代码:
# Include <stdio.h>
#


GDB / GNU程序集: test % esi,% esi返回not equal?

我正在做作业。我们得到了一个预编译的二进制文件,我们必须使用gdb来获取汇编转储,遍历数据结构,查看存储在内存中的值等,以便拼图.


整数的位反转,忽略整数大小和字节排序

给定一个整数typedef:
Typedef unsigned int类型;

Typedef无符号长类型;
我有以下代码来反转整数的位:
TYPE max_bit = (TYPE)-1;
Void reverse_int_setup.


整数大小的变化?

可能重复:
C中的整数大小取决于什么?
为什么整数的大小在 16 位编译器上是 2 个字节,在 32 位编译器上是 4 个字节?此外,它与操作系统有什么关系?
Printf (".


上一页 下一页