Tag: 字符串

将编码为字符数组的C-ctyle字符串转换为Java字符串

我有一个C风格的字符串编码为Java中的字符数组,但我想将此数组转换为Java字符串。 我尝试使用匹配的构造函数调用, String toRet = new String(new char[]{‘B’,’A’,’D’,’\0′, ‘G’, ‘A’, ‘R’, ‘B’, ‘A’, ‘G’, ‘E’}); System.out.println(Arrays.toString(toRet.toCharArray())); 但结果是不正确的,事实上奇怪的错误。 以下是上述代码输出的内容: [B, A, D, 这就是我想要的 [B, A, D] 我在Ubuntu上运行openJdk6。 我还没有在其他VM上测试过上面的代码。

字符串数组C的分段错误

我创建了一个程序,将一个字符串分成由空格分隔的标记,然后将每个单独的字符串复制到一个字符串数组中。 程序运行正常,直到它达到for循环,并在成功将第一个字符串添加到数组并打印它之后,程序崩溃。 我调试了它,发现了 args[i] = malloc((strlen(comm_str) + 1) * sizeof(char)); 返回SEGFAULT然后第二次执行循环。 同样调用堆栈打印出以下内容: 地址:75F943F9,function:strlen(),文件:C:\ Windows \ syswow64 \ msvcrt.dll。 我试图自己纠正程序,但没有结果。 我一开始认为循环尝试访问超出绑定区域,但我认为我已正确地对所有内容进行了malloc。 #include #include #include int main(){ char **args = NULL; char input[] = “cmdline -s 20 -r -t parameter -p 20 filename”; int num = 0; char *comm_str = strtok(input, ” “); /*Tokens command line*/ while(comm_str […]

使用字符串文字处理char * init时崩溃,但不使用malloc处理崩溃

我今天正在读一本关于C的书,它提到以下是真的; 我很好奇为什么要让这个程序validation; 然后最终在这里发布,所以比我聪明的人可以教我为什么这两个案例在运行时是不同的。 该问题的细节与运行时之间的差异有关,如何处理(char *)是基于它是否指向创建为文字的字符串与使用malloc和手动填充创建的字符串。 为什么内存分配的内存更像这样保护? 另外,答案是否解释了“总线错误”的含义? 这是我写的一个程序,询问用户是否想要崩溃,以说明程序编译正常; 并强调在我的脑海中,两个选项中的代码在概念上是相同的 ; 但那就是为什么我在这里,要明白为什么他们不是。 // demonstrate the difference between initializing a (char *) // with a literal, vs malloc // and the mutability of the contents thereafter #include #include #include int main() { char cause_crash; char *myString; printf(“Cause crash? “); scanf(“%c”, &cause_crash); if(cause_crash == ‘y’) { myString = […]

在Rabin-Karp滚动哈希

我正在尝试使用Rabin-Karp来寻找子串; 而且我被困在滚动哈希(试图使用维基百科中建议的公式 )。 #define MOD 1000000007 unsigned long long rolling_hash(const char *str) { unsigned long long hash = 0; size_t str_len = strlen(str); for(int i = 0, k = str_len -1; i < str_len; i++, k–) { hash = hash + str[i] * pow(257, k); // hash = hash % MOD; } return hash; } […]

我怎么能写一个在c中返回一个字符串的函数?

当我尝试使用printf(” %s”,course_comment(1.0) );调用我的函数时printf(” %s”,course_comment(1.0) ); ,程序崩溃了。 这是我的function: char *course_comment(float b) { if(b < 2.0) return("Retake"); } 为什么会崩溃? 我该如何解决?

使用指针反转C中的字符串?

语言:C 我正在尝试编写一个C函数,它使用头文件char * strrev2(const char * string)作为面试准备的一部分,最接近(工作)的解决方案如下,但是我想要一个不包含malloc的实现…这可能吗? 因为它返回一个字符意味着如果我使用malloc,则必须在另一个函数中使用free。 char *strrev2(const char *string){ int l=strlen(string); char *r=malloc(l+1); for(int j=0;j<l;j++){ r[j] = string[lj-1]; } r[l] = '\0'; return r; } [编辑]我已经使用缓冲区编写实现而没有char。 谢谢你!

C中的字符串和指针

#include #include #include int main(void) { char* a = malloc(5 * sizeof(char)); a = “1”; free(a); } 关于上面的代码我有两个问题: 当我初始化这样的代码时,为什么代码会给free(a)带来错误: a =“1” 并且在我初始化这样的时候不会给free(a)带来任何错误: a [0] =’1’。 当我使用[0] =’1’初始化a并使用printf(“%s”,a)打印字符串a为什么我得到结果 ‘1’ 没有用’\ 0’声明第二个索引?

检查字符串中是否存在所有char值

我正在做这个任务,我被困住了。 目标是读取文件并查找文件中String中是否存在这些char值。 我必须将文件中的String与作为参数放入的另一个String进行比较。 但是,只要每个char值都在文件的String中,那么它就“匹配”。 示例(输入和输出): ./a.out file1完成 完成是在笨蛋 完成不是在小狗 示例(file1): 梼 狗 正如您所看到的那样,比较字符串无关紧要,文件每行也跟着一个单词。 我把一个程序放在一起,查找char值是否存在于另一个String中,但这只是问题的一部分。 知道如何去做吗? #define _GNU_SOURCE #include #include #include int main(int argc, char **argv){ FILE *f = fopen(argv[1], “r”); char *line = NULL; size_t len = 0; ssize_t read; char *word = argv[2]; if(argc != 3){ printf(“./a.out \n”); exit(EXIT_SUCCESS); } if(f == NULL){ printf(“file […]

无法将字符串复制到C中的字符串数组

我试图遍历我的链表并将每个节点字段组合成一个字符串,然后将字符串添加到字符串数组中。 void listToArray(){ //create array of strings char *list[numNodes]; int i = 0, n; while(head != NULL){ // add string to array printf(“[%d] %s %s:%d\n “, i, head->fileName, head->ip, head->port); n = sprintf(list[i], “[%d] %s %s:%d\n”, i, head->fileName, head->ip, head->port); head = head->next; printf(“%s\n”, list[i]); i++; } printf语句工作正常,这表明它不是导致问题的节点字段,但是当我执行我的sprintf语句将字符串复制到数组的索引中时。 我遇到了分段错误。

读取字符串并比较它C.

我试图创建一个基于C的字符串菜单,用户输入一个命令,然后运行一个代码块。 无论我做什么,条件永远不会成立: char *input= “”; fgets(input, 50, stdin); printf(“%s”,input); printf(“%d”,strcmp( input,”arrive\0″)); if(strcmp( input,”arrive\0″)==0){…. 我是相当新的c,我发现字符串真的很烦人。 我究竟做错了什么? 注意:当前代码崩溃了我的程序:(