Tag: string

printf忽略单反斜杠’\’

我有这个代码: int main(int argc, char * argv[]) { int i; printf(“%d%s”,argc,argv[1]); return 0; } 如果我将此代码作为a.out a\=b=运行a.out a\=b= 。我正在使用C-shell 它的输出是“ a=b= ”是否有任何方式可以将其输出更改为“ a\=b= ”。

符合标准的字符串是否可以长于SIZE_MAX字符?

我没有在C11标准中找到任何声明字符串不能超过SIZE_MAX (其中SIZE_MAX表示size_t类型的最大值)字符的任何内容。 例如,如果size_max很long ,并且在我的实现中有一个long long类型,它严格地大于long ,那么我可以使用long long定义和索引这样的字符串。 但是,这意味着一些不寻常的情况:例如, strlen可能无法返回字符串的实际大小,因为结果将在结尾处转换为size_t ,因此将报告长度为SIZE_MAX+1的字符串为例如,大小为0。 例如,这会违反标准,从而防止这些字符串存在吗? 作为参考,7.24.6.3仅表示: 7.24.6.3 strlen函数 概要 #include size_t strlen(const char *s); 描述 strlen函数计算s指向的字符串的长度。 返回 strlen函数返回终止空字符前面的字符数。 我是否遗漏了某些东西,或者这对C11(符合标准的实施)是否完全有效?

如何从字符串中获取size_t?

我需要从用户输入中获取数组大小。 我将输入存储为size_t似乎很自然,但是找到一个合适的strto…()函数我找不到任何东西。 我刚刚使用了strtoull() ,因为unsigned long long保证至少为64位,而且我strtoull()使用C99。 但我想知道从字符串中获取size_t的最佳方法是什么 – 例如,在ANSI C中。 编辑: 为了澄清,我不希望字符串长度! 用户将以字符串的forms输入大缓冲区的大小,例如”109302393029″ 。 我需要得到这个数字并存储为size_t 。 当然我可以使用strtol()甚至atoi() ,但它看起来像一个笨拙的黑客(例如, size_t可能包含比int更大的值,我希望用户能够在可寻址空间中输入任何值) 。

strcmpi重命名为_strcmpi?

在MSVC ++中,有一个函数strcmpi用于不区分大小写的C字符串比较。 当你尝试使用它时,它会, 从Visual C ++ 2005开始,不推荐使用此POSIX函数。请改用ISO C ++符合_stricmp。 我没有看到的是为什么ISO不希望MSVC ++使用strcmpi,为什么_stricmp是首选方式,为什么他们懒得重命名函数,以及函数如何以符合下划线的ISO开头。 我知道所有这些都必须有一个原因,我怀疑它是因为strcmpi是非标准的,也许ISO希望非标准扩展以_underscore开头?

C字符串:简单问题

我在下面初始化了三个变量: char c1[] = “Hello”; char c2[] = { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’}; char* c3 = “Hello”; 我知道c1和c2是相同的,并且它们都是字符串,因为它们被\ 0终止。 但是,c3与c1和c2不同。 这是因为c3不以\ 0结尾吗? 这是否意味着c3不是字符串? 如果c3不是字符串,那么为什么printf(“%s”, c3); 不给出错误? 谢谢! 编辑: 有没有理由可以修改c1和c2,但c3不能?

在C中双重拆分

好。 例如,我在我的txt文件中有这一行: 1|1,12;7,19;6,4;8,19;2,2 如您所见,它有两部分,以|分隔 。 我没有问题得到两个部分,并分离第二部分1,12;7,19;6,4;8,19;2,2使用; 分隔器。 但我确实有进一步分离的问题,获得每组的第一和第二个数字。 这是我目前的代码: result = strtok(result, “;”); while(result != NULL ) { printf(“%s\n”, result); result = strtok(NULL, “;”); } 它输出我: 1,12 7,19 6,4 8,19 2,2 太好了。 但是,当我尝试“strtok”(我正在使用此方法进行拆分)时,如下所示: result = strtok(result, “;”); while(result != NULL ) { //printf(“%s\n”, result); help = strtok(result, “,”); while(help != NULL) { printf(“”, help); help […]

从C中的char *中获取单个字符

有没有办法逐个字符遍历或从C中的char *中提取单个字符? 请考虑以下代码。 现在哪个是获得个性化角色的最佳方式? 建议我不使用任何字符串函数的方法。 char *a = “STRING”;

带字符串参数的fprintf

为了创建一个格式化的文件,我想利用fprintf 。 它必须得到char*参数,但我有几个字符串变量。 我该如何使用fprintf ?

Valgrind在简单C字符串函数上的错误

让我们考虑一下这个简单的测试程序: #include #include int main(int argc, char *argv[]) { char buf[256]; int i; strcpy(buf,”Hello world!”); i = strlen(buf); printf(“Length of string is %d.\n”,i); return 0; } 在使用英特尔c ++编译器进行编译并打开优化(O3)时,我从valgrind得到以下错误: ==8727== Conditional jump or move depends on uninitialised value(s) ==8727== at 0x4009EF: main (strtest.cpp:11) ==8727== Use of uninitialised value of size 8 ==8727== at 0x4FC61ED: _itoa_word (in […]

c函数返回格式化字符串

我想做这样的事情: writeLog(printf(“This is the error: %s”, error)); 所以我正在寻找一个返回格式化字符串的函数。