草庐IT

CHAR_LENGTH

全部标签

c++ - 在 C++ 中,当我对 -128,127 范围之外的整数值使用 static_cast<char> 时会发生什么?

在使用g++在i386Linux上编译的代码中,我使用了static_cast()对于char,强制转换的值可能超过-128,127的有效范围.没有错误或异常,所以我在生产中使用了代码。现在的问题是,当抛出超出此范围的值时,我不知道这段代码会如何表现。如果数据被修改或截断都没有问题,我只需要知道这种修改在这个特定平台上的表现如何。另外,如果使用C风格转换((char)value)会发生什么?它的行为会有所不同吗? 最佳答案 在您的情况下,这将是一个显式类型转换。或者更准确地说是积分转换。标准是这样说的(4.7):Ifthedesti

c - 如果数组大小只能是一个常量值,那么 char d_name[...] 是什么意思?

如果数组大小只能是一个常量值,那么chard_name[...]是什么意思?实际上,在dirent.h文件中声明了一个structdirent。它的声明如下:structdirent{....ino_td_ino;chard_name[...];...};它用于一次读取一个目录内容,即inode号和文件名等...我的意思是这样一个数组的最大大小是多少,一旦定义了这样一个数组,在内存中静态分配了多少空间?这样的定义可移植吗? 最佳答案 假设它来自structlinux_dirent,它实际上是chard_name[]:structli

c++ - C语言上 "static const char array"可以包含变量的成员吗

我的代码如下#includestaticconstchar*a="thisisa";staticconstchar*b="thisisb";char*comb_ab[2]={a,b};intmain(){inti=0;for(i=0;i此代码在G++编译器(C++)上正常运行。但海湾合作委员会不工作..输出如下test.c:8:2:error:initializerelementisnotconstanta,^test.c:8:2:error:(nearinitializationfor‘comb_ab[0]’)test.c:10:1:error:initializerelementi

c - 如何在 char 数组中获取 `date` 命令的输出?

我想把GNU/Linuxdate命令的输出放在一个字符数组中。例子:chararray[25];$dateThuJul1909:21:31IST2012printf("%s",array);/*Shoulddisplay"ThuJul1909:21:31IST2012"*/我试过这个:#include#include#defineSIZE50intmain(){chararray[SIZE];sprintf(array,"%s",system("date"));printf("\nGotthis:%s\n",array);return0;}但输出显示数组中的NULL。

C: 使用 fwrite 将 char 写入不同的行

我必须按如下方式写入文件:ABCD...字母表中的每个字符都需要写入文件中的不同行。我有以下程序,一个接一个地写字符:FILE*fp;fp=fopen("file1","a+");inti;charch='A';for(i=0;i我应该如何改变上面的程序来将每个字符写入一个新行。(我尝试在每个字符后写“\n”,但是当我使用VI编辑器或ghex工具查看文件时,我看到了额外的字符;我正在寻找一种方法,以便vi编辑器将完全如上所示显示文件)。我在第一次fwrite后尝试使用以下内容:fwrite("\n",sizeof("\n"),1,fp);谢谢。 最佳答案

c++ - 由于 "signed char"和 "char",系统头文件中的重新定义错误

我尝试包含这个文件boost/assign/list_of.hpp但是我有这个编译器的错误/usr/include/boost/type_traits/is_integral.hpp:38:error:redefinitionofstructboost::is_integral/usr/include/boost/type_traits/is_integral.hpp:32:error:previousdefinitionofstructboost::is_integral文件is_integral.hpp中的这些定义行(32,38)是:BOOST_TT_AUX_BOOL_TRAIT_

c++ - 按位移位将 unsigned char 提升为 int

以下代码:unsignedcharresult;result=(result使用gcc版本4.6.4(Debian4.6.4-2)编译,带有-Wconversion标志导致警告警告:从“int”转换为“unsignedchar”可能会改变其值[-Wconversion]这是为什么? 最佳答案 因为标准是这么说的。二元运算符的操作数进行积分提升,其中任何小于int被提升为int;操作的结果有也输入int。如果原始值是,比如说,0x12,结果将是0x120,并将其分配给一个unsignedchar会引起值的变化。(分配的值将为0x20。

C++ 编辑 char* argv[] 的元素

大家都知道这个函数:intmain(intargc,char*argv[]){}我想在Linux中为我的程序编写命令行界面,这通常由getopt_long()我的程序会像这样从命令行执行:pop3get--limit25--recent因此,argv[]将包括pop3作为它的程序名称,其余的都被视为选项。我想从我的字符串中删除pop3并将其后的第一个标记设置为数组的第一个元素。除了循环之外,还有其他方法可以做到这一点吗? 最佳答案 递增argv指针,递减argc。示例:intmain(intargc,char*argv[]){arg

将 char * 转换为 char * const *

请原谅这个问题的基本“性”。我有时不知所措。我有一个char*但我需要将它转换为char*const*才能在fts()函数中正确使用它。我该怎么做?谢谢 最佳答案 你不应该做那种转换,因为类型不兼容。关于指针和指向指针的指针char*是一个指向字符串的指针,而char**是一个指向字符串的指针。(const是一个奖励)。这可能意味着您不应提供字符串,而应提供字符串数组。这两件事显然是不相容的。不要将它们与Actor混在一起。关于fts_*API要找到您问题的解决方案,我们需要阅读fts_*函数API(例如http://linux.d

c++ - 如何从 unsigned char * 模数和指数 65537(RSA_F4) 创建 RSA 公钥

我正在尝试从模数类型char[]生成一个rsa公钥,我现在的指数是RSA_F4(65537);但是当我尝试使用“n”和“e”的值生成我的公钥时,RSA_public_encrypt返回-1;谢谢!我的代码:#include#include#include#include#include#include#include#include#include#include#include#includeusingnamespacestd;intmain(void){//modulusinformatcharhex;charkey[]="C0E7FC730EB5CF85B040EC25DAEF2