Tag: strtok

删除char数组中的第一个标记,并将其余标记保留在C中

所以如果我在C中有以下char数组: “abc” // where “a”, “b”, and “c” can be char arrays of any length and the // space between them can be of any length 如何删除“a”标记但将其余的“bc”存储在char指针中? 到目前为止,我已经实现了以下不起作用的方法: char* removeAFromABC(char* a, char* abc) { char* abcWithoutA[MAXIMUM_LINE_LENGTH + 1]; int numberOfCharsInA = strlen(a); strcpy(abcWithoutA, (abc + numberOfCharsInA)); return abcWithoutA; }

Strtok和String操作问题

#define DELIMS “!\”#$%&()|’*+,?/:;@[\092]^_{}~\177” void getFileLine(FILE *fp) { char *word, *ptr; int tokennum, count; char buffer[100]; while(!feof(fp)) { (fgets(buffer, 100, fp)); ptr = buffer; for(tokennum = 1; word = strtok(ptr, DELIMS);ptr = NULL, tokennum++) { word = strtok(ptr, DELIMS); printf(“%s\n”, word); } } } 所以我传入的文件中有一个示例程序。 我的工作是删除一些delims并将代码中的每个单词传递到树中。 虽然我不在树的一部分,只是努力让字符串按照我想要的方式进行操作,但我遇到了一些问题。 所以,当我从.txt文件中读取.txt ,我正在获得我想要的部分内容。 .txt的前几行如下: #include “stdafx.h” #include #include #include #define […]

strtok会影响输入缓冲区

我使用strtok来标记字符串,是strtok影响原始缓冲区吗? 例如: *char buf[] = “This Is Start Of life”; char *pch = strtok(buf,” “); while(pch) { printf(“%s \n”, pch); pch = strtok(NULL,” “); }* printf(“Orignal Buffer:: %s “,buf); Output is:: This Is Start Of life Original Buffer:: This 我读到strtok返回指向下一个标记的指针,然后buf如何受到影响? 有没有办法保留原始缓冲区(没有额外的复制开销)? 后续问题::从目前为止的答案我猜有没有办法保留缓冲区。 那么,如果我使用动态数组来创建原始缓冲区并且如果strtok会影响它,那么在释放原始缓冲区时会出现内存泄漏还是strtok负责释放内存?

使用strtok存储数组

int main (){ FILE *file = fopen ( “C:\\input.txt”, “r” ); int i=0, j=0, k=0; char *result[10][10]; char line[100]; char *value; char *res[100][100]; for(i=0; i<=9; i++){ for(j=0;j<=9;j++){ result[i][j] = NULL; } } while(fgets(line, sizeof(line), file)){ char *array=strtok(line,"\n"); res[0][0]=strdup(array); printf("\n\n\n %s RES \n",res[0][0]); array=strtok(array,"\n"); res[0][1]=strdup(array); printf("\n\n\n %s RES \n",res[0][1]); array=strtok(line,"\n"); res[0][2]=strdup(array); } 我想逐行将数组存储在txt文件中。 我的输入文件中有3行。 我希望每一行都存储在一个数组中。 我怎样才能做到这一点 […]

提取文件的扩展名

一些细节 语言:C 系统:Linux; 使用命令行(终端),通过终端读入文件 C用户体验:3个月 我一直在尝试提取给定文件的扩展名,例如“myfile.wld”,以便稍后我可以检查是否在终端上输入了正确的文件类型文件。 这对于作业来说是必要的 我使用函数“strtok”将输入分隔为分隔符“。”。 dot=strtok(argv[1], “.”); filename=dot; 文件名现在是输入“myfile”的第一部分,我的问题是如何在“。”之后进入第二部分,请提出建议,并请耐心等待,使其尽可能简单,以便我可以制作使用你的回复 谢谢

在C中为char数组赋一个char指针

我开始研究C,我已经遇到了一些问题。 我想解析一个文件并将每行的结果存储在一个结构中。 我的结构看起来像: struct record { char x[100]; } 然后,每当我使用strtok解析某些file.txt中的一行时, struct record R; … char *token; token = strtok(line, “\t”); token返回一个指向字符串的指针,每当我打印它时,它都是正确的字符串。 我想将标记分配给x,例如Rx = token ,但是我收到错误,“char x [100]不可分配”。 是否可以将此指针标记转换为实际的char数组,或者将结果存储到结构中的最佳方法是什么?

为什么我的strcmp()失败了?

我是一个C新手和学习字符串标记。 我试图通过以下方式比较两个字符串。 但我正在做的字符串比较是失败的。 你能告诉我这里缺少什么吗? 我找不到另一个类似的问题,可能是由于我对C的经验不足。如果存在,你可以请我转发它吗? char* input = “comparer here”; char* args[5]; int counter = 0; char *tok = strtok(input, ” “); while (tok != NULL) { args[counter] = tok; counter ++; if (counter == 5) break; tok = strtok(NULL, ” “); } char* comp_str = “comparer”; if (strcmp(args[0], comp_str) == 1) { // do […]

将strtok的结果复制到C中的2个字符串

好的,所以我有代码 char * token; char * delimiter =“”; token = strtok(command,delimiter); strcpy(命令,令牌); token = strtok(NULL,delimiter); strcpy(arguments,token); 当我运行它时它给了我EXC_BAD_ACCESS,是的,命令和参数已经定义了。

将strtok结果插入char *(增加动态)

我在失去理智。 我想用空格分割字符串(char * text)并将字符串结果插入到数组中并返回此数组。 我在C中有以下方法 char *read_command(char *text) { int index=0; char *res=NULL; char *command= (char*)malloc(strlen(text)+1); strcpy(command, text); char *tok = strtok(command, ” “); while(tok!=NULL && index ==0) { res = (char*)realloc(res, sizeof(char)*(index+1)); char *dup = (char*)malloc(strlen(tok)+1); strcpy(dup, tok); res[index++] = dup; //Error here tok = strtok(NULL, ” “); } res[index++]=’\0′; return res; } 从主要方法 […]

C:strtok覆盖以前的数组值?

card * load_rolodex(FILE *read_file) { int array_index = 0; char line [LINE_MAX]; card *card_array = malloc(sizeof(card) * upper_bound); while (fgets(line, LINE_MAX, read_file)!= NULL) { card_array[array_index].last_name = strtok(line, ” “); card_array[array_index].first_name = strtok(NULL, ” “); card_array[array_index].phone_number = strtok(NULL, ” “); size++; array_index++; } return card_array; } 我试图将每个标记保存到struct数组中的值。 我正在阅读具有以下格式的文件 lastname firstname number lastname firstname number等。 我的输出如下: 0 […]