Tag: 字符串

从C中的函数返回一个字符串

我有一个ac函数,我想返回一个字符串。 如果我在返回之前打印字符串,那么我会看到croc_data_0186.idx 如果我尝试打印返回的字符串,那么我会看到croc_data_á☼ 谁能看到我做错了什么? 问题function: char* getSegmentFileName(FILE *file, int lineLength, int lineNumber) { char* fileNameString; fseek(file, lineNumber * lineLength, SEEK_SET); char line[lineLength]; fgets(line, lineLength, file); char *lineElements[3]; lineElements[0] = strtok(line, “:”); lineElements[1] = strtok(NULL, “:”); lineElements[2] = strtok(NULL, “:”); fileNameString = lineElements[2]; printf (“getSegmentFileName fileNameString is: %s \r\n”, fileNameString); return fileNameString; } 调用代码: int indexSearch(FILE […]

替换字符串中的字符

可能重复: 在C中替换字符串的function是什么? 我试图用多个字符替换我的字符串中的某个字符。 这是我想要做的一个例子。 说我有字符串“aaabaa” 我想用5“c”替换所有出现的字符“b”。 所以当我完成后,“aaabaa”变成了“aaacccccaa” 我写了以下代码: #include #include int main(void) { char s[20] = “aaabaa”; int i, j; for (i=0; s[i]!= ‘\0’; i++) { if (s[i] == ‘b’) { for (j=0; j<5; j++) { s[i+j] = 'c'; } } } printf("%s\n", s); } 我从这个函数输出的是“aaaccccc”。 它似乎只是用c来覆盖最后两个a。 我有没有办法让这些最后几个不被覆盖?

从套接字缓冲区逐行读取

好吧,我需要帮助:我想写一个函数,从一个从unistd.h头的read()函数的第三个参数获得的套接字缓冲区中逐行read() 。 我写了这个: int sgetline(int fd, char ** out) { int buf_size = 128; int bytesloaded = 0; char buf[2]; char * buffer = malloc(buf_size); char * newbuf; int size = 0; assert(NULL != buffer); while( read(fd, buf, 1) > 0 ) { strcat(buffer, buf); buf[1] = ‘\0’; bytesloaded += strlen(buf); size = size + […]

如何为字符串数组赋值?

例如 #include #include #include char substr[10][20]; int main() { substr[0] = “abc”; printf(“%d”, substr[0]); } 当然上面是错的? 怎么做? 谢谢

在C中,解析一个由多个空格分隔的整数组成的字符串

我试图使用C将包含多行空白分隔整数的文件解析为动态int数组的动态数组。 每行都是数组数组中的数组。 每行中的行数和元素是非常量的。 到目前为止我所做的是使用fgets将每一行作为字符串抓取。 但是,我无法弄清楚如何解析一串空格分隔的整数。 我以为我可以使用sscanf(因为fscanf可以用来解析整个空格分隔的整数文件)。 但是,似乎sscanf具有不同的function。 sscanf只解析字符串中的第一个数字。 我的猜测是,因为该行是一个字符串不是一个流。 我已经四处查找了一种从字符串中创建流的方法,但它看起来并不像C中那样(我无法使用非标准库)。 char* line; char lineBuffer[BUFFER_SIZE]; FILE *filePtr; int value; … while((line = fgets(lineBuffer, BUFFER_SIZE, filePtr)) != NULL) { printf(“%s\n”, lineBuffer); while(sscanf(lineBuffer, “%d “, &value) > 0) { printf(“%d\n”, value); } } 有什么东西可以用来解析字符串。 如果没有,是否有整个系统的替代品? 我宁愿不使用REGEX。

将float转换为字符串而不使用sprintf()

我正在编写基于微控制器的应用程序,我需要将float转换为字符串,但我不需要与sprintf()相关的繁重开销。 有没有雄辩的方法来做到这一点? 我不需要太多。 我只需要2位数的精度。

将每行文件读入数组

我正在读取一个文件,并希望将每一行放入一个数组中的字符串中。 文件的长度是任意的,每行的长度是任意的(虽然假设它将少于100个字符)。 这是我得到的,而不是编译。 基本上这是一个字符数组的数组,对吧? 所以不应该是char** words = (**char)malloc(sizeof(*char)); ? #include #include int main(){ int BUFSIZE = 32767;//max number of lines to read char** words = (**char)malloc(sizeof(*char));//gives error: expected expression before ‘char’ FILE *fp = fopen(“coll.txt”, “r”); if (fp == 0){ fprintf(stderr, “Error opening file”); exit(1); } int i = 0; words[i] = malloc(BUFSIZE); while(fscanf(fp, “%100s”, […]

计算字符串中的单词 – c编程

我需要编写一个函数来计算字符串中的单词。 出于此赋值的目的,“单词”被定义为非空的非空白字符序列,通过空格与其他单词分隔。 这是我到目前为止: int words(const char sentence[ ]); int i, length=0, count=0, last=0; length= strlen(sentence); for (i=0, i<length, i++) if (sentence[i] != ' ') if (last=0) count++; else last=1; else last=0; return count; 我不确定它是否有效,因为我无法测试它直到我的整个程序完成并且我不确定它是否会起作用,是否有更好的方法来编写这个函数?

在C中通过引用传递字符串

我无法弄清楚如何通过函数的参数传回字符串。 我是编程新手,所以我想这可能是一个初学者的问题。 你能给予的任何帮助都将非常感激。 这段代码出错了,我不知道为什么,但是我提供的代码是为了展示我到目前为止的内容。 我已将其设为社区维基,因此您可以自由编辑。 PS这不是功课。 这是原始版本 #include #include #include void fn(char *baz, char *foo, char *bar) { char *pch; /* this is the part I’m having trouble with */ pch = strtok (baz, “:”); foo = malloc(strlen(pch)); strcpy(foo, pch); pch = strtok (NULL, “:”); bar = malloc(strlen(pch)); strcpy(bar, pch); return; } int main(void) { […]

用于从C中的字符串/ char数组中删除空格的函数

这里提出的问题与我遇到的问题非常相似。 区别在于我必须将一个参数传递给一个删除空格并返回结果字符串/ char数组的函数。 我得到了代码工作来删除空格但由于某种原因我留下了从原始数组遗留的尾随字符。 我甚至尝试过strncpy,但我遇到了很多错误。 这是我到目前为止: #include #include #define STRINGMAX 1000 /*Maximium input size is 1000 characters*/ char* deblank(char* input) /* deblank accepts a char[] argument and returns a char[] */ { char *output=input; for (int i = 0, j = 0; i “); fgets(input, STRINGMAX, stdin); /* Read up to 1000 characters from stdin […]