我有一个char数组缓冲区,我用它来存储用户将逐个输入的字符.我下面的代码有效,但有一些我无法弄清楚的故障:
有人可以向我解释发生了什么,也许我可以解决这个问题?谢谢.
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字符串?
我有const char *stringA,我想char *stringB取值(注意stringB不是const).我试过stringB=(char*) stringA,但这stringB仍然指向相同的内存位置,所以当stringA以后的更改时,stringB也是如此.
我也试过strcpy(stringB,stringA),但似乎如果stringB没有初始化为足够大的数组,那就是段错误.我对C字符串没有超级经验,我错过了一些明显的东西吗?如果我只是初始化stringB为char *stringB[23],因为我知道我永远不会有一个比22字符更长的字符串(并允许空终止符),这是正确的方法吗?如果stringB检查是否与其他C字符串相等,那么额外的空格是否会影响任何内容?
(并且在这里使用字符串不是解决方案,因为我需要最小的开销并且可以轻松访问单个字符)
将"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) 我有一个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 ++初学者,我仍然掌握它.
谢谢 .
请考虑以下代码.
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位二进制文件.
我想分解一个句子并将每个字符串存储在一个数组中.这是我的代码:
#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)
它一直给我分段错误,我无法弄明白.我相信当我将令牌复制到我的阵列时,它有一些事情要做.
我需要查找char数组是否以"ADD"开头.我知道使用strcmp(),但我不知道如何获得前三个字符.我真的很讨厌使用c-strings.我怎样才能像一个char数组一样char buffer[1024]?
问题来自于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)
这次没关系.但这似乎有点单调乏味.有没有其他优雅的方法来初始化字符串文字的向量?
我正在读取文件并解析其内容.我需要确保一个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)