Tag: string

从C中的hex字符串转换为ASCII字符串

我试图将hex字符串转换为其等效的ASCII。 我被赋予字符串的“hex”值作为字符串,即代替“ABCD”我得到“41424344”。 我只需要提取41这将是我的hex值并重新编码为“ABCD”。 这就是我所拥有的。 int main(int argc, char *argv[]){ char *str = “ABCD”; unsigned int val = 0; int i = 0; int MAX = 4; for (i = 0; i<MAX; i++){ val = (str[i] & 0xFF); //printf("dec val= %d\n", val); //printf("hex val= %02x\n", val); } val = 0; char *hexstr = "41424344"; char *substr […]

将arrayof字符转换为字符串

我用c语言编写代码。 char a[]={p,r,a,d,e,e,p} 我想在结尾添加’0/’以使其成为字符串。 或者有没有任何方法使其成为字符串而不是在结尾添加null? char *a=pradeep; 通过在末尾添加null将其转换为字符串

程序在接受C中的输入中的第二个字符串之前运行

我试图运行以下代码但程序只接受一个字符串并立即显示输出而不等待输入第二个字符串。 该程序用于2字符串连接。 这是代码: – #include main() { int i, j, len=0; char name[100], abc[100]; printf(“\nPlease Enter String 1 =\t”); scanf(“%[^\n]c”,&name); printf(“\nPlease Enter String 2 =\t”); scanf(“%[^\n]c”,&abc); for(i=0; name[i]!=’\0′; i++) len++; for(j=0; abc[j]!=’\0′; j++) { len++; name[len]=abc[j]; } printf(“\nThe Concatenated String Is =\t”); puts(name); }

如何传递可以从本机写入c#的空字符串缓冲区?

我正在尝试从托管代码中获取一个字符串到我的非托管代码中: unmanaged dll: typedef int (__stdcall * GetNameFromDictionaryCallback)(ULONGLONG id, WCHAR * name); declspec(dllexport) void __stdcall UnmanagedSetNameLookupCallback(GetNameFromDictionaryCallback fn) { GetNameFromDictionaryCallback GetNameFromDictionary = fn; WCHAR * value = new WCHAR[256]; ULONGLONG key = 0x250000000DA44785; GetNameFromDictionary(key, value); // reverse P/Invoke call to C# function wprintf_s(“%ls”, value); // just to display the result for simplicity delete value; } 托管dll: […]

C预处理器能够通过char处理字符串char吗?

我想在编译时隐藏字符串。 我知道它可以在其他预处理器中完成,但我还没有找到一种方法来使用C预处理器。

为什么fgets()和strncmp()在这个C代码中无法进行字符串比较?

这是我遇到的一个非常有趣的问题。 我做了很多关于堆栈溢出的搜索,发现其他人有类似的问题。 所以我相应地写了我的代码。 我最初有fscan()和strcmp() ,但这完全轰炸了我。 所以其他post建议使用fgets()和strncmp()并使用长度来比较它们。 我试着通过打印出两个字符串的大小来调试我正在做的事情。 我想,也许他们有/n或漂浮在那里或其他东西搞乱了(另一篇文章谈到了这一点,但我认为这不会发生在这里)。 因此,如果大小相同,则strncmp()的限制应该相同。 对? 只是为了确保他们被认为是正确的比较。 现在,我知道如果字符串相同,则返回0否则使用strncmp()返回负数。 但它不起作用。 这是我得到的输出: perk repk Enter your guess: perk Word size: 8 and Guess size: 8 Your guess is wrong Enter your guess: 这是我的代码: void guess(char *word, char *jumbleWord) { size_t wordLen = strlen(word); size_t guessLen; printf(“word is: %s\n”,word); printf(“jumble is: %s\n”, jumbleWord); char […]

c中的字符串标记生成器

下面的代码将使用空格分解字符串命令,即“”和句号,即“。”。 如果我想使用空格和完全停止(同时)的出现来分解命令,而不是每个都自己,例如命令如下:’hello .how are you’将被分解成碎片(忽略引号)[你好] [你今天好吗] char *token2 = strtok(command, ” .”);

结构数组的qsort不起作用

我试图通过char对结构运行数组进行排序,但是当我打印数组时,没有任何内容被排序。 看看这个: struct run { char name[20], weekday[4], month[10]; (And some more…) }; typedef struct run run; int name_compare(const void *a, const void *b) { run *run1 = *(run **)a; run *run2 = *(run **)b; return strcmp(run1->name, run2->name); } int count_number_of_different_persons(run results[]) { int i = 0; qsort(results, sizeof(results) / sizeof(run), sizeof(run), name_compare); for(i = […]

获取Cstrings的控制台输入

注意:这是在C ++中但使用C风格的字符串 你好, 我正在进行一项任务,我需要从控制台获取输入并将其保存到cstring。 一切都编译得很好,但是当程序运行时,它只是跳过了从用户那里得到的输入。 因此它将输出:“输入要插入的字符串:”然后跳过cin.getline函数,然后执行下一个命令。 这是我的头文件,cstring的声明,以及我遇到问题的代码行。 #include “stdafx.h” #include #include using namespace std; int main() { char tempCString[500] = {}; //…code snipit… cout << "Enter string to be inserted: " << endl; cin.getline(tempCString, 500, '\n'); //I've also tried cin.getline(tempCString, 500); //…end code snipit… return 0; } 注意:我不能使用“cin >> tempCString”因为它只能获得第一个空格的输入,我需要从控制台获取输入到换行符的所有内容。 谢谢

何时在C中使用plain char类型

在普通C中,按标准有三种不同的“字符”类型: 普通char ,其中一个人的签名是实现定义的。 signed char 。 unsigned char 。 让我们假设至少是C99,其中stdint.h已经存在(所以你有int8_t和uint8_t类型作为可推荐的替代方案,显式宽度为有符号和无符号字符)。 对于我来说,似乎使用普通char类型只有在需要接口标准库的函数(如printf )时才真正有用(或必要),并且在所有其他场景中,而不是要避免。 使用char可能会在实现上签名时导致未定义的行为,并且出于任何原因,您需要对此类数据执行任何算法。 在处理例如Unicode文本(或使用大于127的值表示字符的任何代码页)时,使用适当类型的问题可能是最明显的,否则可以作为普通C字符串处理。 但是,相关的string.h函数都接受char ,如果这样的数据是类型化的char ,那么在尝试解释它时会产生问题,例如对于能够处理其编码的显示例程。 在这种情况下,最值得推荐的方法是什么? 是否有任何特殊原因可以推荐使用char不是stdint.h的合适的固定宽度类型?