Tag: 字符串

好的C字符串库

我最近受到启发,启动了一个我想要编写一段时间的项目。 我想在C中做,因为内存处理是这个应用程序的关键。 我正在四处寻找C中字符串的良好实现,因为我知道我自己这样做会导致一些混乱的缓冲区溢出,我希望处理相当多的字符串。 我发现这篇文章详细介绍了每一个,但他们每个人都觉得他们有很多利弊(不要误会我的意思,这篇文章非常有帮助,但它仍然让我担心,即使我是选择其中之一,我不会使用我能得到的最好的)。 我也不知道这篇文章是如何更新的,因此我目前的请求。 我正在寻找的是可以容纳大量字符的东西,并简化了搜索字符串的过程。 如果它允许我以任何方式标记字符串,甚至更好。 此外,它应该有一些非常好的I / O性能。 打印和格式化打印不是最重要的。 我知道我不应该期望一个库能为我做所有的工作,但如果有一个记录良好的字符串函数可以节省我一些时间和一些工作,只是徘徊。 任何帮助是极大的赞赏。 提前致谢! 编辑:我被问及我喜欢的许可证。 任何类型的开源许可都可以,但最好是GPL(v2或v3)。 EDIt2:我找到了betterString(bstring)库,它看起来很不错。 良好的文档,小而多function的function,并且易于与c字符串混合。 有没有关于它的好故事? 我读到的唯一缺点是它缺乏Unicode(再次,读到这个,还没有看到它面对面),但其他一切似乎都很好。 EDIT3:另外,最好是纯C.

字符串终止符’\ 0’如何与整数常量0具有相同的值?

我有以下代码 – #include #define LENGTH 5 int main(){ char* ch[LENGTH] = {“Zero”, “One”, “Two”, “Three”, “Four”}; char* pc; char** ppc; for(int i=0; i<LENGTH; i++){ ppc = ch+i; pc = *ppc; while(*pc != 0){ printf("%c ", *pc); pc = pc +1; } printf("\n"); } return 0; } 它是使用字符串的多个间接的示例。 输出是 Z ero O ne T wo T […]

进入没有malloc的char * str,没有segfault?

我刚刚使用Cygwin的gcc编译了这个C程序: #include void main (){ char *str; gets(str); printf(“%s”,str); } 抛弃gets的弃用已经过时了,这应该打破,因为我没有为str分配任何内存,但它甚至可以用很长的输入。 例如,如果我设置了char str [16],它会在超过分配的长度后中断几个字符。 为什么我没有得到分段错误?

使用(char *)malloc(0)和NULL初始化字符串之间的区别

为什么在这种情况下分配0大小的char块? 但是如果我写char *string = NULL; 它不会起作用。 我正在使用Visual Studio。 int main() { char *string = (char *)malloc(0); string[0] = ‘a’; string[1] = ‘b’; string[2] = ‘c’; string[3] = ‘d’; string[4] = ‘\0’; printf(“%s\n”,string); return 0; }

如何在c中完美截断字符串?

我正在读取一个文件,其中每行超过63个字符,我希望字符被截断为63.但是,它无法截断从文件中读取的行。 在这个程序中,我们假设文件只有10行: #include #include int main(void) { char a[10][63]; char line[255]; int count = 0; //Open file FILE *fp; fp = fopen(“lines.dat”, “r”); //Read each line from file to the “line array” while(fgets(line, 255,fp) != NULL) { line[63] = ‘\0’; //copy the lines into “a array” char by char int x; for(x = 0; x […]

C中字符串处理的问题

我被困在HW分配中,我需要编写一个程序,将一堆英语单词(在输入.txt文件中用新行分隔的列表中)转换成一堆Pig拉丁语单词(放入一个列表中)在输出.txt文件中用新行分隔)。 我已经非常接近了,但是我正在使用的strncat函数(字符串连接)函数以某种方式抛出一个新行,这实际上抛弃了我正在打印到stdout的文本(使用它来测试现在)。 任何想法为什么会这样? 这是我的代码: #include #include #include #define MAX_STR_SIZE 100 char * convertToPigLatin (char * strPtr, char * pLatinStr); int main(int argc, char *argv[]) { char str[MAX_STR_SIZE]; char pStr[MAX_STR_SIZE]; //char *pStrPtr; FILE *fileInPtr; //Create file name FILE *fileOutPtr; fileInPtr = fopen(“pigLatinIn.txt”, “r”); //Assign text to file fileOutPtr = fopen(“pigLatinOut.txt”, “w”); //pStrPtr = pStr; if(fileInPtr == […]

如何使用C程序检测文件中的特定字符串

我有一个文件,我想使用文件操作使用C程序读取此文件。 然后我想从该文件中获取参数。 让我们说nalu_type = x。 因此,每当我检测到该文件中的字符串nalu_type时,我想将值x放在由我定义的数组中。 请告诉我怎么做。 先谢谢Sanket

WIN32和其他c字符串之间的区别

我在一个小程序中得到了这个代码来读取文件: #ifdef WIN32 unsigned char *buffer = (unsigned char *)alloca((unsigned int)ui.length); #else unsigned char buffer[ui.length]; #endif 为什么Win32平台和其他平台的字符数组使用指针?

C程序:如何查找字符串中字符的最大/最小频率

我试图找到一种方法来获取字符串中最大/最小字符频率的值 例如,帮助 会有max freq = 2和min freq = 1(有2个e,还有其他字母出现一次) 另一个例如aaaa 会有max freq = 4和min freq = 4 我正在尝试对此进行编程,但在使用scanf接收字符串后我不知道该怎么做。 假设只有小写,并且单词之间没有空格。 此外,我更喜欢powershell搜索优雅的解决方案,包括类型转换和诸如此类的东西。 刚开始使用C,请尽可能简单。 顺便说一句,我不介意它只是一个建议或如何做到这一点的基本程序。 我不一定需要整个代码。 提前致谢

函数在C中反转字符串

我写了这个函数来反转C中的字符串,但是当在字符串中切换字符时程序崩溃了。 我不知道是什么导致它,所以任何帮助将不胜感激。 void reverse(char s[]) { char c; int i; int j; for (i = 0, j = (strlen(s) – 1); i < j; i++, j–) { c = s[i]; s[i] = s[j]; //An error occurs here s[j] = c; } printf("%s", s); } main() { reverse("Example"); }