Tag: string

如何在C中将128位整数转换为十进制ascii字符串?

我正在尝试将存储为4个无符号整数的数组的128位无符号整数转换为C中的十进制字符串表示forms: unsigned int src[] = { 0x12345678, 0x90abcdef, 0xfedcba90, 0x8765421 }; printf(“%s”, some_func(src)); // gives “53072739890371098123344” (上面的输入和输出示例完全是虚构的;我不知道输入会产生什么。) 如果我要使用hex,二进制或八进制,这将是一个简单的掩码和位移到剥离最不重要的字符。 但是,在我看来,我需要做基数为10的分裂。 不幸的是,我不记得如何跨多个int执行此操作,并且我使用的系统不支持大于32位的数据类型,因此使用128位类型是不可能的。 使用不同的语言也是不对的,我宁愿为这一项操作避开一个大数字库。

如何在C中将char * str复制到char c ?

尝试将char *str复制到char c[]但是会出现分段错误或初始化程序错误。 为什么这段代码给我一个seg错误 ? char *token = “some random string”; char c[80]; strcpy( c, token); strncpy(c, token, sizeof c – 1); c[79] = ‘\0’; char *broken = strtok(c, “#”);

内置“in”运算符的Python源代码

我试图在(C)Python源代码中找到内置运算符的实现。 我在内置函数源代码bltinmodule.c中搜索过 ,但是找不到这个运算符的实现。 我在哪里可以找到这个实现? 我的目标是通过扩展此搜索的不同C实现来改进Python中的子字符串搜索,尽管我不确定Python是否已经使用了我的想法。

fscanf()可以读取空格吗?

我已经有了一些使用fscanf()读取文本文件的代码,现在我需要对其进行修改,以便之前没有空格的字段需要允许空白。 文本文件基本上是以下forms: 标题:数据 标题:数据 等等… 这基本上是用fgets(inputLine, 512, inputFile); sscanf(inputLine, “%*s %s”, &data);解析的fgets(inputLine, 512, inputFile); sscanf(inputLine, “%*s %s”, &data); fgets(inputLine, 512, inputFile); sscanf(inputLine, “%*s %s”, &data); ,读取DATA字段并忽略标题,但现在一些数据字段需要允许空格。 我仍然需要在它之后立即忽略标题和空格,但是然后读取包括空格在内的其余行。 无论如何使用sscanf()函数执行此操作? 如果没有,我可以对代码进行哪些最小的改变来正确处理空白? 更新:我编辑了用fgets()+ sscanf()替换fscanf()的问题,这是我的代码实际使用的。 当我第一次写这个问题时,我并不认为它是相关的,这就是我将它简化为fscanf()的原因。

生成随机n字节Base64字符串后的不可打印字符

我试图使用openssl生成一个32byte base64字符串,但它并不总是产生32字节字符串,有时输出是乱码并且没有正确显示 #include #include #include #include #include #include #include int Base64Encode(const unsigned char* buffer, unsigned char** b64text) { //Encodes a binary safe base 64 string BIO *bio, *b64; BUF_MEM *bufferPtr; b64 = BIO_new(BIO_f_base64()); bio = BIO_new(BIO_s_mem()); bio = BIO_push(b64, bio); BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL); //Ignore newlines – write everything in one line BIO_write(bio, buffer, strlen(buffer)); BIO_flush(bio); BIO_get_mem_ptr(bio, […]

输出C字符串程序

#include int main() { char s[2]=”a”; s[1]=’b’;s[2]=’c’;s[3]=’d’;s[5]=’e’; printf(“%s $%c$”,s,s[4]); return 0; } 1.当我在C(gcc-4.7.2)中运行该程序时,由于缺少空字符(’\ 0’),我预期运行时错误。 2.如果程序仍然成功编译并执行,因为s [4]尚未初始化,我预计那个地方会有一些垃圾值。但这里我也错了。 上述程序的输出是:abcde $$两个$(dollor)之间没有字符表示printf跳过s [4]。 这是一个相同的ideone链接: http ://ideone.com/UUQxb2 解释这种行为的原因(输出)?

快速的问题

我来打扰你们所有人可能都是非常简单的C问题。 使用以下代码: int get_len(char *string){ printf(“len: %lu\n”, strlen(string)); return 0; } int main(){ char *x = “test”; char y[4] = {‘t’,’e’,’s’,’t’}; get_len(x); // len: 4 get_len(y); // len: 6 return 0; } 2个问题。 为什么他们不同,为什么是6? 多谢你们。 编辑:对不起,我知道会解决什么,我只是想了解发生了什么。 那么strlen只是继续转发这个点,直到找到一个\ 0? 此外,当我在主函数中而不是在get_len函数中执行strlen时,两者都是4.那只是巧合吗?

创建包含字符串的静态C结构

我正在尝试在Rust中创建一个动态库,它导出一个结构作为符号,将通过dlopen()加载到C程序中。 但是,当我访问结构中的第二个字符串时,我遇到了一些段错误,所以我做了一个小测试程序,试着弄清楚我做错了什么。 这是Rust代码(test.rs),使用“rustc –crate-type dylib test.rs”编译: #[repr(C)] pub struct PluginDesc { name: &’static str, version: &’static str, description: &’static str } #[no_mangle] pub static PLUGIN_DESC: PluginDesc = PluginDesc { name: “Test Plugin\0”, version: “1.0\0”, description: “Test Rust Plugin\0” }; 这是尝试加载库(test.c)的C程序,使用“gcc test.c -ldl -o test”编译: #include #include typedef struct { const char *name; const char *version; […]

如果条件出现故障,请在里面进行字符串比较

我试图用C编程,但并不成功。 我有一个简单的源代码,我需要匹配if (char)中的多个字母。 它显示以下错误消息(在使用gcc的linux终端中): main.c:在函数`main’中:main.c:16:23:warning:字符常量对于它的类型太长[默认启用] if(firstName [20] ==’Vojta’){ 源代码: #include int main(int argc, char const *argv[]) { /* code */ char firstName[20]; char lastName[40]; char password[20]; char confpasswd[20]; int age; printf(“Please write your first and last name:”); scanf(“%s%s”, firstName, lastName); printf(“%s %s:\n”, firstName, lastName); if (firstName[20] == ‘Vojta’){ printf(“\ncool\n”); } return 0; }

我只是想不通strcat

我知道我不应该使用这个function,我不在乎。 上次我检查了strcat的规范时,它说了更新第一个值以及返回相同的内容。 现在,这是一个非常愚蠢的问题,我希望你解释一下,就像你和一个非常愚蠢的人说话一样。 为什么这不起作用? char* foo=”foo”; printf(strcat(foo,”bar”)); 编辑:我不知道char []和char *之间的区别。 我如何分配255个字符的字符串? 编辑2:好的,好的,所以char [number]分配了那么多字节的字符串? 说得通。 谢谢。 编辑3:另外,如何在不声明的情况下使用字符数组? 我会将它作为char [255]进行类型转换吗? 编辑4:strcat((char [256])“foo”,“bar”)返回错误。 我很厌倦C. 编辑5:strcat((char [256])“foo”,(char [])“bar”)也是如此。 编辑5: char[256] foo=”bar”; 真正顺利。 “预期的标识符”