Tag: char

如何在C中初始化二维字符串数组的行

我想使用指针将字符串存储在2D数组中,但我对如何操作感到困惑。 我见过的例子只使用int数组或使用方括号[]来分配固定大小的内存。 所以我正在尝试初始化我的2D字符串数组,这就是我所拥有的: char ** stringArr = (char**)malloc(/*I don’t know what goes here*/); for(i = 0; i < rows; i++) stringArr[i] = (char*)malloc(cols *sizeof(char)); 正如你可以看到我第一次调用malloc的参数一样,如果我想要一个精确的x行数,我会被困在哪里,每行都存储一串字符。 任何帮助,将不胜感激!

将char复制到char数组

我试图将一个“字符串”复制到C中的字符串数组: const gchar *strAuth, *strEditor, *strTitle; gchar *strings[18][150]; strcpy(strings[0],strAuth); 在编译时,gcc发出警告:警告:从不兼容的指针类型[默认启用]传递’strcpy’的参数1 可能,由于我的这个错误,检查和打印在代码的后半部分 g_print(“%s”, strings[0]); int i=0; while (i <= 18) { if (strlen(strings[i]) != 0) { g_string_append_printf(tstring, "\t%s=\"%s\",\n", keyword[i], strings[i]); i++; } } 也没有用(它也打印空字符串)。 C不是我的语言,所以请帮忙 注意:攻击这个和这个 ,但没有帮助自己NB:gchar“对应于标准的C char类型。” 在滑稽

malloc()缓冲区太小

我问这个问题来磨练我的知识。 我在下面写了一份测试代码。 char *ptr1的大小是malloc(1) 。 我在3行上复制5个字。 共有32个字符长度。 输出很顺利。 我浏览了strncat()函数的代码。 它似乎也没有为复制目的分配额外的内存。 我也没有在ptr1 char指针的末尾添加任何空字符。 这怎么能产生正确的结果? 那是对的吗? int main(void) { char *name = “First Set”; char *ptr1; ptr1 = malloc(1); // <<== here the memory is allocated only 1 byte joinWithMe(ptr1, name); // <<== 9 bytes are copied printf("PTR1 : %s\n", ptr1); joinWithMe(ptr1, "-Second Set"); // <<== 11 […]

将int(32位)转换为char(8位)

我有这些定义: int data = uartBaseAddress[UART_DATA_REGISTER / 4]; // data coming from UART RX port char message[20]; // array of 20 chars 现在当我尝试这样做时: message[0] = (char) data; printf(“%x”, message[0]); 它打印(例如): “ffffff9c” 。 当然我只想要最后8位(“9c”),我不明白如何正确地进行从int到char的转换。 编辑:我的意思是:我必须像这样填充数组: data = 0xFFFFFF9c; message[0] = data & 0xFF; — it has to contain only 9c data = 0xFFFFFFde; message[1] = data & […]

在C中将char从big endian转换为little endian

我正在尝试将char变量从big endian转换为little endian。 这正是: char name[12]; 我知道如何在大端和小端之间转换一个int,但是char会搞砸我。 我知道我必须首先将它转换为整数forms,我有。 为了转换int,这是我使用的: (item.age >> 24) | ((item.age >> 8) & 0x0000ff00) | ((item.age << 8) & 0x00ff0000) | (item.age << 24); 为了转换char,如果可能的话,我想以同样的方式做到这一点,因为这是我理解的唯一方法。

分段引用char数组时出错

#include int main(void) { char * p= “strings are good”; printf(“%s”,*p); return 0; } 有人可以告诉我为什么我在这里得到分段错误?

在这种情况下,数组索引中的字符表示如何工作?

我是C的初学者,我有这样的代码: #include main() { int i; int ndigit[10] = { [9] = 5 }; printf(“%d\n”,++ndigit[‘9’]); } 这打印的值如下: -1074223011 但是,当我将声明更改为: ++ndigit[‘9’-‘0’] 它正确打印该值 6 我想知道为什么需要在我的索引中添加-0才能使其正常工作? 为什么只提到++ndigit[‘9’] ,对我没有帮助? 提前致谢。

OpenMP Segfault

我试图将OpenMP并行化添加到一个工作代码(只是一个for循环),但我无法摆脱分段错误。 问题来自这条线: pos += sprintf(com + pos, “%d “, i); com是一个字符数组,我尝试将它定义为char com[255]或char *com = malloc(255*sizeof(char)) ,在for循环内部和之前。 当我在循环之前定义com时,我将private(com)添加到#pragma omp parallel for directive。 我也尝试初始化它并使用firstprivate 。 ( pos是一个整数,初始化为0 ) 当我不添加-fopenmp一切正常,但是使用-fopenmp它会产生段错误。 我错过了什么?

字符串到Arduino中的const char *?

我有一个变量tweet ,它是一个字符串,它在一开始就有一个字符我要剪掉。 所以我想要做的是使用strstr()来删除它。 这是我的代码: tweet = strstr(tweet, “]”); 但是,我收到此错误: cannot convert ‘String’ to ‘const char*’ for argument ‘1’ to ‘char’ strstr(const char*, const char*) 所以我的想法是将tweet转换为char。 我该怎么做呢?

使用strcpy时出现分段错误?

我试图通过传递在编译时定义路径: -DDCROOTDEF='”/path/to/stuff”‘ 在编译行上。 然后我尝试在代码中使用它,如: char * ptr_path; strcpy(ptr_path, DCROOTDEF); strcat(ptr_path,”/MainCommons/CommonLib/fonts/Arial.ttf”); char *pftf=ptr_path; gdImageStringFT(pimg,brect,iclr,pftf,pts,ang,ixp,iyp, (char *)cbuf); 这给了我一个分段错误。 但是,如果我尝试先打印字符串: char * ptr_path; strcpy(ptr_path, DCROOTDEF); strcat(ptr_path,”/MainCommons/CommonLib/fonts/Arial.ttf”); char *pftf=ptr_path; printf(“%s\n”,pftf); gdImageStringFT(pimg,brect,iclr,pftf,pts,ang,ixp,iyp, (char *)cbuf); 它工作得很好。 我错过了char指针的复杂性吗? 谢谢