Tag: 字符串

在C中获取文件扩展名

如何从C中的文件名中获取文件扩展名(如.tiff )? 谢谢!

glibc strlen()实现如何工作

来自K&R的strlen()仅需几行。 int strlen(char *s) { char *p = s; while (*p != ‘\0’) p++; return p – s; } 但是glibc版本要长得多。 为简单起见,我删除了所有注释和64位实现,提取的版本strlen()如下所示: size_t strlen(const char *str) { const char *char_ptr; const unsigned long int *longword_ptr; unsigned long int longword, magic_bits, himagic, lomagic; for (char_ptr = str; ((unsigned long int) char_ptr & (sizeof (longword) – 1)) != […]

C函数使用指针更改字符串

我正在尝试创建一个从main函数更改char数组的函数,这就是我正在尝试做的事情: #include #include #include void change(char *a); int main() { char a[] = “hello”; printf(“\na = %s”, a); change(a); printf(“%\na = %s”, a); getch(); } void change(char *a) { a = “goodbye”; }

修剪C中的字符串

简述: 我使用win32和标准C api(使用MSVC2008进行编译,因此我可以访问所有C ++的东西,如果需要,但我只是试图修剪一个char* ),相当于.NET中的.NET的String.Trim 。 鉴于存在strchr , strtok和各种其他字符串函数,当然应该有一个trim函数,或者可以重新调整的函数… 谢谢

如何检查字符串是否为数字?

我想检查字符串是否是带有此代码的数字。 我必须检查字符串中的所有字符都是整数,但while返回总是isDigit = 1.我不知道为什么如果不起作用。 char tmp[16]; scanf(“%s”, tmp); int isDigit = 0; int j=0; while(j 57 && tmp[j] < 48) isDigit = 0; else isDigit = 1; j++; }

何时使用strncpy或memmove?

(gcc 4.4.4 c89) 我总是使用strncpy来复制字符串。 我从来没有真正使用过memmove或memcpy 。 但是,我只是想知道你什么时候决定是使用strncpy , memmove还是memcpy ? 我写的代码是针对客户端/服务器应用程序的。 在文档中,他们使用bcopy 。 但是,我可以和其他人一样吗? bcopy((char*)server->h_addr, (char*)&serv_addr.sin_addr.s_addr, server->h_length); 非常感谢,

如何在调用strcpy之前分配数组?

鉴于: char test[] = “bla-bla-bla”; 哪两个更正确? char *test1 = malloc(strlen(test)); strcpy(test1, test); 要么 char *test1 = malloc(sizeof(test)); strcpy(test1, test);

修改字符串时出现分段错误

我在这段代码中得到了分段错误错误,但不知道为什么? #include int main(void) { char *ptr = “Linux”; *ptr = ‘T’; printf(“\n [%s] \n”, ptr); return 0; }

关于C中指针和字符串的问题

可能重复: C中的char s []和char * s有什么区别? char * str =“…”和char str [N] =“……”之间的区别? 我有一些令我困惑的代码。 #include #include int main(int argc, char *argv[]) { char* string1 = “this is a test”; char string2[] = “this is a test”; printf(“%i, %i\n”, sizeof(string1), sizeof(string2)); system(“PAUSE”); return 0; } 当它输出string1的大小时,它打印4,这是预期的,因为指针的大小是4个字节。 但是当它打印string2时,它输出15.我认为数组是一个指针,所以string2的大小应该与string1相同吗? 那么为什么它为相同类型的数据(指针)打印出两种不同的大小呢?

用C打印字符串的所有排列

我正在学习回溯和递归,我坚持使用一种算法来打印字符串的所有排列。 我用置换算法求解了它,但是我无法理解递归方法。 我在网上搜索并找到了这段代码: void permute(char *a, int i, int n) { int j; if (i == n) printf(“%s\n”, a); else { for (j = i; j <= n; j++) { swap((a+i), (a+j)); permute(a, i+1, n); swap((a+i), (a+j)); } } } 这个算法基本上如何工作我无法理解? 我甚至试过干跑! 如何应用回溯? 它是否比贝尔算法更有效地计算排列?