相关疑难解决方法(0)

如何在C ++中使用memset?

我来自Python,最近学习C ++。我正在学习一个名为C / C ++的函数,memset并从https://www.geeksforgeeks.org/memset-in-cpp/网站中遵循在线示例,在该示例中我遇到了一些编译错误:

/**
 * @author      : Bhishan Poudel
 * @file        : a02_memset_geeks.cpp
 * @created     : Wednesday Jun 05, 2019 11:07:03 EDT
 * 
 * Ref: 
 */

#include <iostream>
#include <vector>
#include <cstring>

using namespace std;

int main(int argc, char *argv[]){
    char str[] = "geeksforgeeks";

    //memset(str, "t", sizeof(str));
    memset(str, 't', sizeof(str));

    cout << str << endl;

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

使用单引号't'时出错
这将打印多余的字符。

tttttttttttttt!R@`
Run Code Online (Sandbox Code Playgroud)

在双引号中使用“ t”时出错

tttttttttttttt!R@`
Run Code Online (Sandbox Code Playgroud)

如何在C ++中使用memset?

进一步的研究此处
提供了具有缺点的优秀教程memsethttps : //web.archive.org/web/20170702122030/https …

c++ string initialization memset string-literals

28
推荐指数
4
解决办法
3599
查看次数

strlen和sizeof对于基于Pointer和Array的init的不同答案

可能的重复:
C:指针和数组之间的
差异结果的大小不同

基本上,我这样做了......

 char *str1 = "Sanjeev";
 char str2[] = "Sanjeev";
 printf("%d %d\n",strlen(str1),sizeof(str1));    
 printf("%d %d\n",strlen(str2),sizeof(str2));
Run Code Online (Sandbox Code Playgroud)

我的输出是

7 4
7 8
Run Code Online (Sandbox Code Playgroud)

我无法说明原因为sizeof str14.请解释这些之间的区别.

c c++

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

C程序 - 带有\ 0字符的sizeof字符串

解释sizeof如何确定字符串的长度.

#include<stdio.h>

int main()
{
    char str[] = "Sasindar\0Baby\0";
    printf("%d\n", sizeof(str));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c string sizeof

3
推荐指数
1
解决办法
1534
查看次数

中文单词的C语言sizeof,strlen和strncpy

我没有很长时间接触C语言.我有一些与中文单词和strncpy有关的问题.

char* testString = "????"
sizeof(testString) => it prints out 4.
strlen(testString) => it prints out 10.
Run Code Online (Sandbox Code Playgroud)

当我想复制到另一个char数组时,我有一些问题.

char msgArray [7];/*这只是一个例子.由于某些限制,我们限制了缓冲区大小.*/

如果我想复制数据,我需要检查

if (sizeof(testString) < sizeof(msgArray)) {
    strncopy(msgArray, testString, sizeof(msgArray));
}
Run Code Online (Sandbox Code Playgroud)

它会有问题.结果是它只会复制部分数据.

实际上它应该与之相比

if (strlen(testString) < sizeof(msgArray)) {

}
else {
   printf("too long");
}
Run Code Online (Sandbox Code Playgroud)

但我不明白为什么会这样.

如果我想定义限制字符数(包括unicode(例如中文字符),我如何实现定义数组?我想我不能使用char []数组.

非常感谢所有回复.

我的解决方案解决方案:我最终决定剪切字符串以满足有限的字节.

c

2
推荐指数
1
解决办法
475
查看次数

标签 统计

c ×3

c++ ×2

string ×2

initialization ×1

memset ×1

sizeof ×1

string-literals ×1