标签: cstring

结束时带有垃圾字符的字符串数组

我有一个char数组缓冲区,我用它来存储用户将逐个输入的字符.我下面的代码有效,但有一些我无法弄清楚的故障:

  1. 当我执行一个printf来查看Buffer中的内容时,它确实填满了但是我最后得到了垃圾字符
  2. 尽管被声明为char Buffer [8],它不会停留在8个字符;

有人可以向我解释发生了什么,也许我可以解决这个问题?谢谢.

char Buffer[8]; //holds the byte stream
int i=0;

if (/* user input event has occurred */) 
{
        Buffer[i] = charInput;
        i++;

        // Display a response to input
        printf("Buffer is %s!\n", Buffer);

}
Run Code Online (Sandbox Code Playgroud)

输出:

tagBuffer is 1??w!
tagBuffer is 12?w!
tagBuffer is 123w!
tagBuffer is 1234!
tagBuffer is 12345!
tagBuffer is 123456=!
tagBuffer is 1234567!
tagBuffer is 12345678!

tagBuffer是123456789!

c string cstring null-terminated

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

正确的方法来复制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字符串相等,那么额外的空格是否会影响任何内容?

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

c++ string copy cstring

11
推荐指数
1
解决办法
1万
查看次数

C++ LibCurl - 将CURLcode转换为CString

将"res"变量(CURLcode)转换为CString的最简单方法是什么?

这是在我的机器上编译好的标准示例,但我想在MFC应用程序中使用它并将结果显示为MessageBox.任何帮助表示赞赏!

#include <curl/curl.h>

int main(void)
{
  CURL *curl;
  CURLcode res;

  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
    res = curl_easy_perform(curl);

    /* always cleanup */ 
    curl_easy_cleanup(curl);
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ cstring libcurl

10
推荐指数
1
解决办法
8011
查看次数

CString到LPCTSTR的转换

我有一个CString变量,我需要转换为LPCTSTR(const char*).我需要这个转换,以便我可以将它用作函数中的参数.

CString看起来像:

CString sqlTemp = _T("INSERT INTO "+ sw1 +" (filename, "+ sw2 +") VALUE ("+ sw7 +","+ sw3 +" ) ");
Run Code Online (Sandbox Code Playgroud)

它包含一个查询.该函数的原型是:

int WriteBlob(LPCTSTR szSqlStat, LPCTSTR szFilePath)
Run Code Online (Sandbox Code Playgroud)

那么你能告诉我一个如何转换为LPCTSTR的例子吗?它可能是微不足道的,但我是一个c ++初学者,我仍然掌握它.

谢谢 .

c++ type-conversion cstring

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

无法修改C字符串

请考虑以下代码.

int main(void) {
    char * test = "abcdefghijklmnopqrstuvwxyz";
    test[5] = 'x';
    printf("%s\n", test);
    return EXIT_SUCCESS;
}

在我看来,这应该打印abcdexghij.但是,它只是终止而不打印任何东西.

int main(void) {
    char * test = "abcdefghijklmnopqrstuvwxyz";
    printf("%s\n", test);
    return EXIT_SUCCESS;
}

然而,这工作得很好,所以我误解了操纵C字符串或其他东西的概念吗?如果它很重要,我正在运行Mac OS X 10.6,它是我正在编译的32位二进制文​​件.

c cstring

8
推荐指数
2
解决办法
3545
查看次数

8
推荐指数
1
解决办法
7331
查看次数

分解字符串并将其存储在数组中

我想分解一个句子并将每个字符串存储在一个数组中.这是我的代码:

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

int main(void)
{
    int i = 0;
    char* strArray[40];
    char* writablestring= "The C Programming Language";
    char *token = strtok(writablestring, " ");


    while(token != NULL)
    {
        strcpy(strArray[i], token);
        printf("[%s]\n", token);
        token = strtok(NULL, " ");
        i++;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它一直给我分段错误,我无法弄明白.我相信当我将令牌复制到我的阵列时,它有一些事情要做.

c cstring strtok

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

如何在C中切割字符串?

我需要查找char数组是否以"ADD"开头.我知道使用strcmp(),但我不知道如何获得前三个字符.我真的很讨厌使用c-strings.我怎样才能像一个char数组一样char buffer[1024]?

c string cstring slice

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

如何使用字符串文字优雅地初始化vector <char*>?

问题来自于C++ Primer第5版的练习:

编写一个程序,将char*指针列表中的元素分配给C风格的字符串到一个字符串向量.

---------------- Oringinal Question ------------

首先,我尝试以下有点直接的方式:

vector<char *> vec = {"Hello", "World"};
vec[0][0] = 'h';
Run Code Online (Sandbox Code Playgroud)

但编译代码我收到警告:

temp.cpp:11:43: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
     vector<char *> vec = {"Hello", "World"};
                                           ^ 
Run Code Online (Sandbox Code Playgroud)

运行./a.out我得到了一个

Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

我想是因为我试着写一个const char.所以我尝试另一种方式:

char s1[] = "Hello", s2[] = "World";
vector<char *> vec = {s1, s2};
vec[0][0] = 'h';
Run Code Online (Sandbox Code Playgroud)

这次没关系.但这似乎有点单调乏味.有没有其他优雅的方法来初始化字符串文字的向量?

c++ initialization vector cstring stdstring

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

如何检查CString是否只包含数字字符

我正在读取文件并解析其内容.我需要确保一个CString值只包含数字.我能实现的不同方法有哪些?

示例代码:

Cstring Validate(CString str)
{
  if(/*condition to check whether its all numeric data in the string*/)
  {
     return " string only numeric characters";
  }
  else
  {
     return "string contains non numeric characters";
  }
}
Run Code Online (Sandbox Code Playgroud)

cstring visual-c++ visual-c++-2005

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