Tag: string

在c中添加到字符串末尾的额外字符

所以我试图在C中打印出一个字符串,当我打印出来时,我总是在字符串的末尾获得额外的字符。 代码: char binaryNumber[16] = “1111000011110000”; printf(“binary integer: %s\n”, binaryNumber); 输出: 二进制整数:1111000011110000▒▒▒▒ 能帮我弄清楚为什么会这样吗? 我认为这是我的代码中其他一些问题的根源。 在我以更复杂的方式创建字符串之前我遇到了这个问题,并且在这种情况下也获得了额外的字符,但它们是不同的。 所以我用最基本的方法制作了一个字符串(这里显示的方法),我仍然遇到问题

malloc和scanf字符串

下面用malloc和scanf和%s得到一个字符串的简单程序如下所示,给出了一个我无法理解的输出。 虽然我’malloced’只有5个字节,但我的输入字符串已超过上述大小但没有分段错误。 scanf是否覆盖了malloc分配? #include #include #include int main() { char * name; int SZSTRING; printf(“Enter size of name :”); scanf(“%d”, &SZSTRING); name = (char*) malloc ((SZSTRING + 1) * sizeof(char)); printf(“Enter name :”); scanf(“%s”, name); printf(“len of ‘name’ : %d\n”,strlen(name)); printf(“name final: \”%s\”\n”,name); free(name); return 0; } Output: OptiPlex-380:~/gsa/compile$ gcc -o try try.c OptiPlex-380:~/gsa/compile$ ./try […]

从DLL返回的char 转换为Python字符串

我试图将C样式const char []字符串指针(从DLL返回)转换为Python兼容的字符串类型。 但是当Python27执行时: import ctypes charPtr = ctypes.cast( “HiThere”, ctypes.c_char_p ) print( “charPtr = “, charPtr ) 我们得到: charPtr = c_char_p(‘HiThere’) 也许某些事情无法正确评估。 我的问题是: 应该如何将此charPtr转换为兼容Python的可打印字符串? 是刚才提到的演员操作应该做什么?

C将char附加到char *

所以我试图将char添加到char* 。 例如,我有char *word = ” “; 我也有char ch = ‘x’; 我确实append(word, ch); 使用这种方法.. void append(char* s, char c) { int len = strlen(s); s[len] = c; s[len+1] = ‘\0’; } 它给了我一个分段错误,我理解为什么我想。 因为s[len]超出范围。 我该如何制作呢? 我需要清除char* ,如果我要使用char word [500]之类的东西; 一旦附加了一些字符,我该如何清除? 它的strlen总是500吗? 提前致谢。

使用fgets和strtok从文件中读取和解析行

我在使用相当基本的代码时遇到了麻烦。 我需要从下面显示的文件中读取每一行,用strtok将它分成3部分,并将每个部分存储到一个数组中。 “目标”和“助手”的数组工作正常,但由于某种原因,整个名称数组都填充了从文件中读取的姓氏。 输入文件: Redden 2 0 Berglund 5 2 Jackman 2 0 Stewart 4 0 Oshie 3 5 McDonald 2 4 Pietrangelo 2 7 Perron 2 6 Tarasenko 5 5 相关代码: int main(int argc, char* argv){ FILE* inFile = fopen(argv[1],”r”); char ** nameArray; int * goalArray; int * assistArray; int size = countLinesInFile(inFile); allocateMemory(&goalArray, […]

映射区域的权限错误

尝试运行以下函数时出错: char* reverseInPlace(char* src) { //no need to alloc or free memory int i=0; int size=mystrlen(src); for(i=0;i<size;i++) { int j=size-i-1; if(i<j) { char temp; printf("Interchange start %d:%c with %d:%c",i,src[i],j,src[j]); temp=src[i]; src[i]=src[j];//error occurs here src[j]=temp; printf("Interchange complete %d:%c and %d:%c",i,src[i],j,src[j]); } } return src; } 我把这个代码称为: char* rev2=reverseInPlace(“BeforeSunrise”); printf(“The reversed string is %s\n”,rev2); 错误如下所示: Interchange start […]

将字符串转换为signed int

我想将字符串转换为signed int。 以下是要求。 我已将hex值存储为缓冲区中的字符串。 现在我想将该值转换为signed int。 buf = “fb869e”将其转换为signed int。 所以o / p应该是-293218。 但是当我试图使用strtol进行转换时,我得到的是16483998.所以我该怎么办?

遍历C字符串:获取字符串的最后一个单词

你怎么会得到一个字符串的最后一个字,从’\ 0’换行符到最右边的空格? 例如,我可以在这样的地方为str分配一个字符串: char str[80]; str = “my cat is yellow”; 我怎么会变黄?

strlen是否具有未初始化值的字符串未定义行为?

strlen返回终止空字符前面的字符数。 strlen的实现可能如下所示: size_t strlen(const char * str) { const char *s; for (s = str; *s; ++s) {} return(s – str); } 此特定实现取消引用s ,其中s可能包含不确定的值。 它相当于: int a; int* p = &a; *p; 因此,例如,如果要执行此操作(这会导致strlen提供不正确的输出): char buffer[10]; buffer[9] = ‘\0’; strlen(buffer); 是不确定的行为?

sp ++在c ++中?

我正在用c ++搜索sprintf。 我想构建一个mysql查询字符串,但如果我这样做(max_limit是一个const int ) std::string query = “select * from bla limit ” + max_limit; 查询不起作用。