Tag: char

顺便读取内存:“signed char *”vs“unsigned char *”

人们经常需要一次一个字节地读取内存,就像在这个天真的memcpy()实现中一样: void *memcpy(void *dest, const void *src, size_t n) { char *from = (char *)src; char *to = (char *)dest; while(n–) *to++ = *from++; return dest; } 但是,我有时会看到人们显式使用unsigned char *而不仅仅是char * 。 当然, char和unsigned char可能不相等。 但是,当按字节读/写内存时,我是否使用char * , signed char *或unsigned char *有所不同吗? 更新:实际上,我完全清楚c=200可能有不同的值,具体取决于c的类型。 我在这里问的是为什么人们在读取内存时有时会使用unsigned char *而不是char * ,例如为了在char[4]存储uint32_t 。

char array = char数组的问题

我有: char message1[100]; char message2[100]; 当我尝试执行message1 = message2 ,我收到错误: 从类型’char *’分配类型’char[100]’时不兼容的类型 我有类似的function if(send(clntSocket, echoBuffer, recvMsgSize, 0) != recvMsgSize){ DieWithError(“send() failed”) } 插图中。 这些可能会以某种方式弄乱吗? 🙁 我有一种感觉,也许你不能做char数组或其他东西,但我环顾四周,找不到任何东西。

char数组中可以有多少个字符?

#define HUGE_NUMBER ??? char string[HUGE_NUMBER]; do_something_with_the_string(string); 我想知道什么是我可以添加到char数组的最大数量,而不会冒任何潜在的内存问题,缓冲区溢出等风险。 我想让用户输入,也许最大可能。

Scanf没有扫描%c字符但跳过声明,为什么?

我使用switch case语句编写了一个程序,并要求输入char但它不会在控制台窗口中询问char但是完全跳过它 int main() { float a, b, ans; char opr; printf(“\nGIVE THE VALUES OF THE TWO NUMBERS\n”); scanf(” %f %f”,&a,&b); printf(“\nGIVE THE REQUIRED OPERATOR\n”); //no display(echo) on the screen //opr = getch(); //displays on the screen //opr = getche(); scanf(“%c”,&opr); switch(opr) { case ‘+’ : ans = a+b; printf(“%f”, ans); break; case ‘-‘ : […]

C中的hex到char数组

给定一串hex值,例如“0011223344”,使其为0x00,0x11等。 如何将这些值添加到char数组? 相当于: char array[4] = { 0x00, 0x11 … };

为什么sizeof(’a’)在C中是4?

可能重复: 为什么C字符文字而不是字符? #include int main(void) { char b = ‘c’; printf(“here size is %zu\n”,sizeof(‘a’)); printf(“here size is %zu”,sizeof(b)); } 这里输出是(在这里看现场演示。) here size is 4 here size is 1 我不明白为什么sizeof(‘a’)是4?

在char中为char数组赋值

有什么区别: char fast_car[15]=”Bugatti”; 和 char fast_car[15]; fast_car=”Bugatti”; 因为第二个导致编译错误: 错误:从类型’char *’分配类型’char [15]’时出现不兼容的类型 虽然第一个工作正常。 将数组中的字符串放在与数组初始化不同的位置会很有帮助。

将char数组转换为C中的int数

我想转换一个char数组[],如: char myarray[4] = {‘-‘,’1′,’2′,’3′}; //where the – means it is negative 所以它应该是整数:-1234使用C中的 标准库。 我找不到任何优雅的方式来做到这一点。 我可以肯定附加’\ 0’。

创建一个返回char *的C函数的FORTRAN接口

现在,我已经对此持续了大约一个星期,并且在论坛之后搜索了论坛,以便清楚地解释如何从C向FORTRAN发送char *。 为了让事情更令人沮丧,从FORTRAN向C发送char *参数是直截了当的…… 从FORTRAN向C发送char *参数(这很好): // The C header declaration (using __cdecl in a def file): extern “C” double GetLoggingValue(char* name); 来自FORTRAN: ! The FORTRAN interface: INTERFACE REAL(8) FUNCTION GetLoggingValue [C, ALIAS: ‘_GetLoggingValue’] (name) USE ISO_C_BINDING CHARACTER(LEN=1, KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: name END FUNCTION GetLoggingValue END INTERFACE ! Calling the function: GetLoggingValue(user_name) 当尝试使用类似逻辑从C返回char *时,我遇到问题后出现问题。 […]

内存中的字符串文字是什么? 堆栈/堆?

可能重复: C字符串文字:它们去哪儿了? 我所知道的, 通常,指针必须由malloc()分配,并将分配给堆,然后由free()取消分配; 和 非指针(int,char,float等)将自动分配给堆栈,并且只要函数返回就不会分配 但是,从以下代码: #include int main() { char *a; a = “tesaja”; return 0; } 分配到哪里? 堆栈还是堆?