Tag: 字符串

在C中声明和修改字符串

我最近开始尝试学习C编程语言。 在我的第一个程序(简单的hello world事物)中,在我意识到我不能只执行variable_name = “string data”后,我遇到了声明字符串的不同方法: char *variable_name = “data” char variable_name[] = “data” char variable_name[5] = “data” 我不明白的是它们之间的区别。 我知道它们是不同的,其中一个专门分配了一定数量的内存来存储数据,但这就是它,我觉得我需要在C中更加复杂的概念之前理解这一点。 另外,为什么使用*variable_name让我将变量名重新分配给新字符串,但是variable_name[number]或variable_name[]不是? 当然,如果我给它分配10个字节( char variable_name[10] = “data” )并尝试将其重新分配给10个字节或更小的东西它应该可以工作,那么为什么不呢? 什么是空括号和星号做什么?

使用C / C ++有效地反序列化由浮点数,标记和空行组成的字符串

我有大字符串,类似于以下… some_text_token 24.325973 -20.638823 -1.964366 0.753947 -1.290811 -3.547422 0.813014 -3.547227 0.472015 3.723311 -0.719116 3.676793 other_text_token 24.325973 20.638823 -1.964366 0.753947 -1.290811 -3.547422 -1.996611 -2.877422 0.813014 -3.547227 1.632365 2.083673 0.472015 3.723311 -0.719116 3.676793 … …我正在尝试有效地,并且在交错的序列中,它们出现在字符串中,抓住…… 文本标记 浮动值 空白行 ……但我遇到了麻烦。 我已经尝试过strtod并成功地从字符串中抓取了浮点数,但我似乎无法使用strtod来向我报告交错的文本标记和空白行。 我不是100%自信strtod是“正确的轨道”给出交错的令牌和空白行,我也感兴趣。 字符串中存在标记和空行以给浮点数提供上下文,因此我的程序知道每个标记之后要使用的浮点值是什么,但是strtod似乎更适合于报告它遇到的浮点数。一个字符串,不考虑空白行或代币等愚蠢的东西。 我知道这在概念上并不是很难,但对C / C ++来说相对较新我无法判断我应该关注哪些语言function,以充分利用C / C ++可以带来的效率来解决这个问题。 有什么指针吗? 我非常感兴趣为什么各种方法的function或多或少都有效。 谢谢!!!

我希望这会崩溃,但事实并非如此

我是一个80年代的老黑客,我手上有一些空闲时间以为我会’C’大惊小怪 (我的背景是Forth,它做的事情回到了前面所以我学到很多关于强迫很多错误的事情) 在这种情况下,我设置了一个小数组,我认为这将是3个元素的大小(0,1,2) 如果我运行编译,我本以为我会遇到一个越界错误,但是没有 – 它编译好了并且运行得很甜蜜 这一点并不是很匆忙,但对于那个小秃头来说并不好,所有这些都在刮擦。 int main() { char members[3][16]; // 3 elements, each 15 char long plus null printf(“\n enter something.. “); scanf( “%s”, members[4]); printf(“\n and something else.. “); scanf( “%s”, members[5]); printf(” %s “, members[4]); printf(” %s\n”, members[5]); return 0; }

警告:未知转义序列:’\ 040′

我正在用C编写一个简单的应用程序,我想在BSD许可下发布。 应用程序的一部分负责向用户打印有关该程序的信息。 但是,我在打印许可证文本时遇到问题。 这是一个例子: #include #include void show_license(void) { const char *license = “\n\ Copyright (c) 2012 \n\ All rights reserved.\n\ \”Redistribution and use in source and binary forms, with or without\n\ modification, are permitted provided that the following conditions are\n\ met:\n\ \n\ * Redistributions of source code must retain the above copyright\n\ notice, this […]

如何从C中的给定字符串中删除\ n或\ t?

如何在C中删除所有\ n和\ t的字符串?

如何在c中正确printf整数和字符串?

我有以下代码: char *s1, *s2; char str[10]; printf(“type a string: “); scanf(“%s”, str); s1 = &str[0]; s2 = &str[2]; printf(“%s\n”, s1); printf(“%s\n”, s2); 当我运行代码时,输​​入输入“A 1”如下: type a string: A 1 我得到以下结果: A < 我正在尝试将第一个字符作为字符串读取,将第三个字符作为整数读取,然后在屏幕上打印出来。 第一个角色总是有效,但屏幕只会在那之后显示随机的东西….我该如何解决? 谢谢

使用JSON数据

我想在C中创建一个简单的twitter客户端。我是新手,并且不确定如何从我从API获得的JSON字符串中分离有意义的东西。 例如,如果我将此作为API的响应,我如何将“text”的值提取到字符串(char *)中? 我想我可以在低级别处理字符串,但是每次我需要从JSON字符串中获取值时,这不会变得太乏味吗?

将指针重置为文件的开头

我怎样才能重置指向命令行输入或文件开头的指针。 例如,我的函数是从文件中读取一行并使用getchar()将其打印出来 while((c=getchar())!=EOF) { key[i++]=c; if(c == ‘\n’ ) { key[i-1] = ‘\0’ printf(“%s”,key); } } 运行之后,指针指向EOF im假设? 如何让它再次指向文件的开头/甚至重新读取输入文件 即我输入(./function <inputs.txt)

与区域设置无关的strtod实现

我有一个库,需要解析双数字,总是使用一个点’。’ 作为小数分隔符。 不幸的是,对于这种情况,strtod()尊重可能使用不同分隔符的语言环境,因此解析可能会失败。 我不能setlocale() – 它不是线程安全的。 所以我现在正在寻找一个干净的与语言环境无关的strtod实现。 到目前为止,我已经找到了多个实现,但是所有这些实现看起来都很糟糕,或者就像坏代码一样。 有人可以为我推荐经过充分测试,工作,干净(ANSI)C的实现吗?

C中的污点字符串

我正在我的文件操作function中运行Coverity工具并收到以下错误。 正如您在下面看到的,我在将有问题的变量传递给错误消息中显示的行号之前使用了snprintf()。 我想这个字符串的一些消毒必须作为snprintf()的一部分来完成。 但仍然显示警告。 Error:TAINTED_STRING (TAINTED string “fn” was passed to a tainted string sink content.) [coverity] char fn[100]; int id = 0; char* id_str = getenv(“ID”); if (id_str) { id = atoi(id_str); } memset(fn, ‘\0’, sizeof(fn)); snprintf(fn, 100, LOG_FILE, id); if(fn[100-1] != ‘\0’) { fn[100-1] = ‘\0’; } log_fp = fopen (fn, “a”); 任何帮助将受到高度赞赏。