标签: strcat

Matlab strcat功能与空间有关

我正在努力实现这个目标:

strcat('red ', 'yellow ', 'white ')
Run Code Online (Sandbox Code Playgroud)

我希望看到"红黄白",但是,我在命令输出上看到"redyellowwhite".需要做些什么来确保空间连接正确?提前致谢.

matlab strcat

30
推荐指数
4
解决办法
4万
查看次数

error:函数返回局部变量的地址

我是C的初学者,我正在自学.我正在创建以下功能:

char *foo(int x){
     if(x < 0){
        char a[1000];
        char b = "blah";
        x = x - 1;
        char *c = foo(x);
        strcpy(a, b);
        strcat(a, c);
        return a;
      }
    blah ...
}
Run Code Online (Sandbox Code Playgroud)

我基本上试图返回一个附加的字符串,但我收到以下错误:

"错误:函数返回局部变量的地址",任何建议,如何解决这个问题?

c return strcpy strcat

24
推荐指数
4
解决办法
8万
查看次数

如何在C中找到argv []的长度

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]){
    int fir; //badly named loop variable
    char *input[] = calloc( strlen(argv), sizeof(char)); //initializing an array
    for( fir = 1; fir< strlen(argv); fir++){ //removing the first element of argv
        strcat(input, argv[fir]); // appending to input
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是第7行.它说"从不兼容的指针类型传递'strlen'的参数1".我得到了相同的错误strcat功能.对于这两种功能,它也说"给出了一个char **但是预期的const char *".

我正在尝试使用argv除第一个之外的所有元素填充新数组.我试过了argv = &argv[1],但没用.

这些strlen()strcat()函数不采用char数组吗?

c strlen argv strcat

15
推荐指数
2
解决办法
5万
查看次数

realloc():重新分配时为下一个大小无效,以便为char*上的strcat腾出空间

我在以下代码中收到无效的内存错误:

printf(" %s\n","FINE 5");
printf("%s LENGTH IS: %d\n","FINE 6",strlen(": "));
buffer = (char *)realloc(buffer, strlen(buffer)* sizeof(char) + (strlen(": ")+1)* sizeof(char));
printf(" %s\n","FINE 7");
strcat(buffer, ": \0");
Run Code Online (Sandbox Code Playgroud)

输出:

FINE 5
FINE 6 LENGTH IS:
检测到 2 *glibc* ./auto:realloc():下一个大小无效:0x08cd72e0***======= Backtrace:=========/lib/tls /i686/cmov/libc.so.6(+0x6b591)[0x6dd591]

这里需要注意的Fine 7是从未打印过.每次运行时无效的下一个大小错误位于同一位置.

发现这种相关性

c string malloc realloc strcat

13
推荐指数
2
解决办法
5万
查看次数

如何从三个整数(或者可能是git/SVN commit/rev.string)生成constexpr版本字符串?

说我有

constexpr const std::uint8_t major = 1;
constexpr const std::uint8_t minor = 10;
constexpr const std::uint8_t bugfix = 0;
Run Code Online (Sandbox Code Playgroud)

而且我要

constexpr const char* version_string(){ ... }
Run Code Online (Sandbox Code Playgroud)

要返回"1.10.0"本例中的等价物,我该怎么做?

我假设我需要这两个,在constexpr:

  • 整数到字符串转换
  • 字符串连接

这个问题纯粹是学术性的,constexpr除了"有可能"之外,我认为实际上没有任何用处.我只是看不出这会如何发展.我愿意接受适用于GCC 4.9和Clang 3.4/3.5的C++ 1y解决方案.

我相信我在日本的一些博客上发现了几乎所有的东西:

我会看到我能用这些做些什么,也许当我对结果感到满意时,我自己回答这个自称有趣的问题.

c++ itoa strcat constexpr c++11

11
推荐指数
2
解决办法
1575
查看次数

strcat将char连接到字符串上?

使用GDB,我发现在尝试此操作时出现了分段错误:

strcat(string,&currentChar);
Run Code Online (Sandbox Code Playgroud)

鉴于该字符串被初始化为

char * string = "";
Run Code Online (Sandbox Code Playgroud)

和currentChar是

char currentChar = 'B';
Run Code Online (Sandbox Code Playgroud)

为什么会导致分段错误?

如果strcat不能用于此,我怎么能将char连接到一个字符串?

c string concatenation char strcat

10
推荐指数
2
解决办法
5万
查看次数

strcat实现

我试图自己实现strcat,我发现了像这样的Wiki的strcat实现......但是当我使用它时,存在分段错误.

下面的代码有什么问题?

char *
strcat(char *dest, const char *src)
{
    size_t i,j;
    for (i = 0; dest[i] != '\0'; i++)
        ;
    for (j = 0; src[j] != '\0'; j++)
        dest[i+j] = src[j];
    dest[i+j] = '\0';
    return dest;
}
Run Code Online (Sandbox Code Playgroud)

c strcat

7
推荐指数
2
解决办法
5万
查看次数

为什么C++中有些字符无法编辑?

我正在尝试strcat用 C++ 编写自己的函数,但它有一些问题。
\n我的输入是两个字符c和,我的函数将返回一个指向与 相连的a字符的字符指针。ca

\n

例如,
\n输入:\'abc\' \'xyz\'
\n预期输出:\'xyzabc\'
\n我的函数的输出:\'xyza@\xe2\x96\xb2\xe2\x88\xa9\'

\n

我的函数返回一些与我的输入不同的特殊字符。

\n

我调试了我的函数并发现:

\n
    \n
  • 当 时i=0destination[3]= source[0]=\'a\'
  • \n
  • 但当i=1, destination[8]= source[1]=\'b\'
  • \n
  • i=2, destination[9]= source[2]=\'c\'
  • \n
  • 最后,destination[10]=\'\\0\'
  • \n
\n
#include<iostream>\n#include<string.h>\nusing namespace std;\n\nchar* mystrcat ( char * destination, const char *source){\n    for (int i=0; i<strlen(source); i++) {\n        destination[strlen(destination)+i] …
Run Code Online (Sandbox Code Playgroud)

c++ string strcat

7
推荐指数
1
解决办法
204
查看次数

为什么MSVC++认为"std :: strcat"是"不安全的"?(C++)

当我尝试做这样的事情时:

char* prefix = "Sector_Data\\sector";
char* s_num = "0";
std::strcat(prefix, s_num);
std::strcat(prefix, "\\");
Run Code Online (Sandbox Code Playgroud)

等等,我收到警告

warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead.
Run Code Online (Sandbox Code Playgroud)

为什么strcat被认为是不安全的,有没有办法在不使用strcat_s的情况下摆脱这个警告?

另外,如果摆脱警告的唯一方法是使用strcat_s,它是如何工作的(语法方面:显然它不需要两个参数).

c++ warnings strcat strcat-s

6
推荐指数
3
解决办法
7275
查看次数

strcat目标数组的大小

参加以下计划:

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    char a[8] = "Hello, ";
    char b[7] = "world!";

    strcat(a, b);

    cout << a;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

请注意,a并且b其大小与指定的字符串相同.

文件规定,对于strcat(a, b)工作,a需要足够大,以包含串联的结果字符串.

不过,cout << a显示"Hello, world!".我进入未定义的行为吗?

c c++ strcat

6
推荐指数
1
解决办法
822
查看次数

标签 统计

strcat ×10

c ×6

c++ ×4

string ×3

argv ×1

c++11 ×1

char ×1

concatenation ×1

constexpr ×1

itoa ×1

malloc ×1

matlab ×1

realloc ×1

return ×1

strcat-s ×1

strcpy ×1

strlen ×1

warnings ×1