在C中将字符转换为二进制

我试图将一个字符转换为它的二进制表示(所以字符 – > ascii hex – >二进制)。 我知道这样做我需要转移和AND 。 但是,我的代码由于某种原因不起作用。 这就是我所拥有的。 *temp指向C字符串中的索引。 char c; int j; for (j = i-1; j >= ptrPos; j–) { char x = *temp; c = (x >> i) & 1; printf(“%d\n”, c); temp–; }

什么是英语单词的好哈希函数?

我有很多英文单词,我想哈希。 什么是良好的散列函数? 到目前为止,我的散列函数将字母的ASCII值相加,然后以表格大小为模。 我正在寻找一些高效而简单的东西。

警告:获取function是危险的

当我使用gets函数时,gcc给了我一个警告: warning:the `gets’ function is dangerous and should not be used. 为什么获取和放置function危险?

如何使用共享内存在进程之间共享信号量

我必须将N个客户端进程与一个服务器同步。 这些进程由一个main函数分叉,我在其中声明了3个信号量。 我决定使用POSIX信号量,但我不知道如何在这些进程之间共享它们。 我认为共享内存应该正常工作,但我有一些问题: 如何在我的细分中分配正确的内存空间? 我可以在shmget size_t字段中使用sizeof(sem_t)来准确分配我需要的空间吗? 有没有人有类似这种情况的例子?

如何在C中链接多个实现文件

我有一些.c文件,即实现文件说 main.c中 AC 公元前 来自任何文件的函数可以从不同的文件中调用任何函数。 我的问题是,我是否需要一个.h ie头文件用于A和B的每个实现,其中每个头文件都有A或B中所有函数的定义。 另外,main.c会包含Ah和Bh #included吗? 如果有人能够最终说清楚,那么我如何在以后编译并运行终端中的多个文件。 谢谢。

使用C在二进制表示中打印int

我正在寻找一个允许我打印int的二进制表示的函数。 到目前为止我所拥有的是什么; char *int2bin(int a) { char *str,*tmp; int cnt = 31; str = (char *) malloc(33); /*32 + 1 , because its a 32 bit bin number*/ tmp = str; while ( cnt > -1 ){ str[cnt]= ‘0’; cnt –; } cnt = 31; while (a > 0){ if (a%2==1){ str[cnt] = ‘1’; } […]

如果用户输入非数字字符,如何仅扫描整数并重复读取?

这是一个年轻的tyro问题,C代码试图阻止用户输入一个小于0或大于23的字符或整数。 #include #include int main(void) { const char *input; char *iPtr; int count = 0; int rows; printf(“Enter an integer: “); scanf(“%s”, input); rows = strtol(input, &iPtr, 0); while( *iPtr != ‘\0’) // Check if any character has been inserted { printf(“Enter an integer between 1 and 23: “); scanf(“%s”, input); } while(0 < rows […]

如何在内存中存储任意大的整数值?

我必须存储一个大于long数据类型的最大值的整数值。 我如何在内存中存储和操作此值? 如果可能的话,请通过一个例子来说明。

如何使用gdb调试?

我试图在我的程序中添加一个断点 b {line number} 但我总是得到一个错误,上面写着: No symbol table is loaded. Use the “file” command. 我该怎么办?

scanf:“%”跳过第二个输入,但“%”不跳过。 为什么?

请考虑以下代码: #include int main (void) { char str1[128], str2[128], str3[128]; printf (“\nEnter str1: “); scanf (“%[^\n]”, str1); printf (“\nstr1 = %s”, str1); printf (“\nEnter str2: “); scanf (“%[^\n]”, str2); printf (“\nstr2 = %s”, str2); printf (“\nEnter str3: “); scanf (“%[^\n]”, str3); printf (“\nstr3 = %s”, str3); printf (“\n”); return 0; } 执行时,只有第一个scanf停止提示。 该程序不会停止下一次scanf 。 但是如果格式字符串从”%[^\n]”更改为” […]