Tag: 字符串

strcat()用于格式化字符串

我正在我的程序中逐个构建一个字符串,当我在末尾添加一个简单的字符串时,我正在混合使用strcat(),但是当我添加一个格式化字符串时,我正在使用sprintf()例如: int one = 1; sprintf(instruction + strlen(instruction), ” number %d”, one); 是否可以使用strcat()连接格式化的字符串或者首选方法是什么?

如何使用fgets读取未知长度的输入

我怎么应该使用fgets()读取长输入,我不太明白。 我写了这个 #include #include #include int main() { char buffer[10]; char *input; while (fgets(buffer,10,stdin)){ input = malloc(strlen(buffer)*sizeof(char)); strcpy(input,buffer); } printf(“%s [%d]”,input, (int)strlen(input)); free(input); return 0; }

如何在C中有效地从句子中提取单词?

我需要一个有效的函数,将句子的第一秒和其余部分提取为三个变量。

为什么C / C ++字符串文字声明必须是单行的?

是否有任何特殊原因在C ++中不允许使用以下多行字符串文字? string script = ” Some Formatted String Literal “; 我知道可以通过在每个换行符之前放一个反斜杠来创建多行字符串文字。 我正在编写一种编程语言(类似于C),并希望能够轻松创建多行字符串(如上例所示)。 是否有任何技术原因可以避免这种字符串文字? 否则我将不得不使用类似python的字符串文字与三引号(我不想这样做): string script = “”” Some Formatted String Literal “””; 为什么C / C ++字符串文字声明必须是单行的?

静态内存实例中的字符串计数

据我所知,编译时类C字符串只作为一个实例保存在静态内存中。 例如,我在下面的gcc 4.6运行示例中得到了同样的结果。 但我想知道它总是真的可以携带。 C和C ++上的行为很有趣。 #include bool amIportable(const char* value) { const char* slocal = “Hello”; return (slocal==value); } int main() { const char* s = “Hello”; std::cout << std::boolalpha << amIportable(s) << '\n' << amIportable("Hello") << '\n'; }

C:从函数返回字符串

我有一个返回字符串的函数: const *char getMyPassword() { return “mysecretpassword”; } 好吧,它工作得很好,但我发现如果我在Unix系统上运行“字符串”,它会显示在列表中……不好。 更换它的最简单方法是什么? 该函数位于库中,我希望保持灵活性。 我现在开始在函数内进行mallocing,字符串中的字符串消失了。 但是,我什么时候可以再次释放它? char * getMyPassword() { unsigned char arr[] = { ‘p’, ‘a’, ‘s’, ‘s’, ‘w’, ‘o’, ‘r’ , ‘d’, ‘\0’ }; char *return_arr = malloc(sizeof(arr)); strcpy(return_arr, arr); return return_arr; } 如果我以前是malloc并传递一个指针,那么我怎么能知道之前的大小,因为密码大小只在函数中知道? 作为一个计划BI可以通过一个巨大的arrays,但这似乎不是很优雅。 我该怎么办呢? 编辑:我添加了strcpy(return_arr,arr)。 我实际上已经在原始代码中使用它,但在这里忘了它。

为什么strcpy()和strcat()在嵌入式域中不好用

在这里,我想了解strcpy() and strcat()缺点 我想了解嵌入式域/环境中的这些function危险区域。 有人告诉我,我们从不在嵌入域中使用strcpy,strcat and strlen函数,因为它以null结尾,有时我们处理加密数据和null字符,所以我们无法获得实际结果,因为这些函数停止在null字符上。 所以我想知道这些function的所有东西和其他替代品。 我们如何使用其他替代function

比较两个字符串中的单词

我做了两个字符串。 用户可以填写它们。 char text[200]; char text2[200]; 我需要从两个字符串中找到类似的单词。 例如, 文字=我一辈子都在这里 Text2 =他们在这里赢得了我们所有人 我需要编程找到类似’here’,’all’之类的单词。 我试过这样但却找不到所有的话。 if(strstr(text,text2) != NULL) 然后printf,但我认为这是不对的。

使用sprintf而不使用手动分配的缓冲区

在我正在处理的应用程序中,日志记录工具使用sprintf来格式化写入文件的文本。 所以,像: char buffer[512]; sprintf(buffer, … ); 当发送的消息对于手动分配的缓冲区而言变得太大时,这有时会导致问题。 有没有办法获得sprintf行为而无需像这样手动分配内存? 编辑:虽然sprintf是一个C操作,我正在寻找C ++类型的解决方案(如果有的话!)让我得到这种行为……

字符串反转递归

好的,我写了这个程序的2个版本。 但我正在寻找最好的解决方案 – 最简单快速的解决方案。 这是我的解决方案,但我被告知这个解决方案是O(n * n)慢,我不知道究竟是什么意思。 我还被告知我可以通过将它分成2个function来固定它,任何人都可以帮我这样做吗? void reverse3(char s[]) { int l; int i; l = strlen(s); if(l > 1) { reverse3(s + 1); for(i = 1; i < l; i++) { int temp = s[i-1]; s[i-1] = s[i]; s[i] = temp; } } }