问题标签 [c-strings]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
25869 浏览

c++ - 复制C字符串的正确方法

有没有一种简单的方法来复制 C 字符串?

我有const char *stringA,我想char *stringB取值(注意stringB不是const)。我试过stringB=(char*) stringA了,但这stringB仍然指向相同的内存位置,所以当stringA以后更改时,stringB也会这样做。

我也试过strcpy(stringB,stringA)了,但似乎如果stringB没有初始化为足够大的数组,就会出现段错误。不过,我对 C 字符串并不是很有经验,我是否遗漏了一些明显的东西?

如果我只是初始化stringBchar *stringB[23],因为我知道我永远不会有一个比22字符长的字符串(并允许空终止符),这是正确的方法吗?如果stringB检查与其他 C 字符串的相等性,额外的空间会影响什么吗?

(并且在这里仅使用字符串不是解决方案,因为我需要最小的开销和轻松访问单个字符。)

0 投票
3 回答
331 浏览

c++ - 如何识别代码中 const char* 和 const char[] 的类型?

我想要一个方法告诉我s1是“char*”,s2是“char[]”,这个方法怎么写?

0 投票
1 回答
679 浏览

c - 在c中搜索字符串的子字符串,然后从中创建一个新字符串

C 并没有使这变得容易。我四处张望,什么也没找到。

我需要在 C 字符串中搜索以“Sample:”开头的子字符串,然后创建一个新的 c 字符串,该字符串由之后的所有字符组成,直到第一个换行符。

在 C++ 中,我可以在心跳中做到这一点。有经验的 C 程序员能给我指路吗?

我敢肯定我可以通过手写来做到这一点,但肯定有一些内置函数可以提供帮助吗?

0 投票
1 回答
8285 浏览

c++ - 获取 Cstrings 的控制台输入

注意:这是在 C++ 中,但使用 C 风格的字符串

你好,

我正在处理一项任务,我需要从控制台获取输入并将其保存到 cstring。一切都编译得很好,但是当程序运行时,它只是跳过了从用户那里获取输入。所以它会输出:“输入要插入的字符串:”然后跳过cin.getline函数,然后执行下一条命令。

这是我的头文件、cstring 的声明以及我遇到问题的代码行。

注意:我不能使用“cin >> tempCString”,因为它只会将输入输入到第一个空格,我需要从控制台获取所有内容的输入,直到换行符。

谢谢

0 投票
3 回答
874 浏览

c - 从函数 C 返回填充的字符串数组

这是第一次发帖,如有任何困惑,我深表歉意:

我正在编写这样的函数:

我的函数的目的是获取输入字符串(基本上是任何用户输入)的副本,然后用于strtok将其转换为令牌并通过数组指针 ( argV) 填充数组。完成myFunc后,希望我的字符串中有参数计数和字符串数组inputStr

这是我如何称呼它的示例:


我的问题:我应该如何以安全和一致的方式最好地做到这一点。专业人士如何做到这一点?


  1. 我不使用malloc,因为:

    • 我不知道输入的参数数量或每个参数的长度(动态分配空间)。我想这就是我使用指针的原因
    • 因为我在主函数中声明了它,所以我认为指向/内存的指针和使用的指针argCTempargVTemp很好/保持在范围内,即使它们在堆栈上。
  2. 我知道myFunc退出时它会使它创建的任何堆栈引用无效,所以这就是我从调用函数向它发送指针的原因。我应该使用指针等等malloc还是什么?

  3. 最后一件事:在myfunc退出之前,我检查了 and 的值,argCTemp它们argVTemp有有效的内容。我正在设置argCtempargVtemp就像这样:

    /li>

在函数退出之前,它似乎工作得很好。由于我在内存中的其他位置设置指针,我很困惑为什么引用失败。我在设置指针时尝试使用mallocINSIDE myFunc,但它在结束时仍然变成垃圾myFunc并被调用函数读取。

如果有任何令人困惑的地方,我很抱歉,并提前感谢您的帮助。

0 投票
3 回答
288 浏览

c++ - 舍入 CString 中包含的值

所以我有一个 CString,它包含一个数值,例如“45.05”,我想将这个数字四舍五入到小数点后一位。

我用这个功能

将值放入我可以舍入的浮点数中。但是,在 45.05 的情况下,我得到的数字是 45.04999 ...它四舍五入到 45.0,人们期望 45.1

如何从我的 CString 中获取正确的值?

TIA

0 投票
1 回答
9884 浏览

objective-c - 如何确定Objective C中的字符串是否相等?

我从 JSON 结果中读取了一个字符串,如下所示:

然后我尝试确定字符串是否等于值“N”

if 语句总是返回 else 部分,即使结果是“N”。它们都具有相同的值,但语句总是返回 false。

0 投票
6 回答
7753 浏览

c++ - 为什么要在 C++ 中使用 std::string 而不是 c 风格的字符串?

“人们应该始终使用std::string而不是 c 风格的 strings( char *)”是几乎所有发布在此处的源代码的建议。虽然建议无疑是好的,但要解决的实际问题不允许详细说明为什么?方面的建议详细。这个问题是作为相同的占位符。

一个好的答案应该包括以下几个方面(详细):

  1. 为什么要std::string在 C++ 中使用 c 风格的字符串?
  2. 中提到的做法有哪些缺点(如果有的话)#1
  3. 在哪些情况下,与中提到的建议相反#1是一种好的做法?
0 投票
1 回答
803 浏览

objective-c - 将空字符附加到常规字符

我想将空字符与常规字符连接起来,如下所示:

问题是字符串的长度为 4(看起来像¿ABC)。如何编辑此代码以便将空字符也附加到字符串中?

回复马克的评论

我在这里尝试做的是将字符串的长度附加到字符串的开头,而不是数字格式,而是 ascii 字符的格式(几乎就像一个基本的 256 数字)。我会使用格式, @"%04c%@",length,message, 问题是生成的字符串将是000¿ABC并且零具有 ascii 值(准确地说是十进制的 48),这样就达不到目的了。具有十进制值 0 的 ASCII 字符是空字符 ( \0),所以我必须使用它而不是 0。我必须有那些前导空字符。

出于我想要完成的目的,以下代码有效

但是,如果有人可以贡献一些更短或更直观的东西,那就太好了。

0 投票
3 回答
631 浏览

c++ - C++:将不接受新的 C 字符串输入

首先,提前感谢您的帮助。这个问题快把我逼疯了。

我有一个接受 c 字符串的程序,然后可以计算元音和辅音的数量。这没有问题。但是,我还需要包含一个允许用户创建新字符串的函数。但是,问题是,当用户从菜单中选择“新字符串”时,它只是循环执行该newString()方法,而无需等待用户输入。然后它会创建一个新的空白屏幕。

这是整个程序。newString()方法在最后。