c - 如何取消引用字符串指针
问题描述
我在从代码中获取所需行为时遇到问题。我是 C 语言的新手(虽然我通常用 C++ 编程,所以我有点熟悉),我不确定我的问题该去哪里。在下面的代码中,当尝试使用传递给函数的“输入”字符串的内容填充 2 个字符串时,结果是内存位置被传递给了 2 个字符串,这意味着当我对单个字符串执行修改时,原始数据已编辑...我希望将初始数据复制到分配给新字符串的新内存位置。
bool interpretInput(char *input)
{
char *name = malloc(MAX_NAME_SIZE / 2);
char *surname = malloc(MAX_NAME_SIZE / 2);
if (name == NULL | surname == NULL)
{
return 1;
}
int length = (int) strlen(input);
if ((length > 0) && (input[length - 1] == '\n')) input[length - 1] = '\0';
if (surname = strpbrk(input, " "))
{
int sLength = (int) strlen(surname);
for (int i = 0; i < sLength; i++)
{
surname[i] = surname[i + 1];
}
length = (int) strlen(input);
for (int i = 0; i <= length - sLength; i++)
{
name[i] = input[i];
}
length = (int) strlen(name);
sLength = (int) strlen(surname);
printf("Name: %s length: %d \n", name, length);
printf("Surname: %s length: %d \n", surname, sLength);
}
else
{
printf("Name length: %d", length);
}
return 0;
}
编辑:实际上,我想用另一个数组的每个增量处的值填充一个数组,而不使用 strcpy。
解决方案
我想你想要strcpy(char* dest, char* src)
。取消引用 char* 只会为您生成字符串中的第一个字符。
#include <stdio.h>
int main()
{
char* test = "hello world";
char* test2 = malloc(11*sizeof(char));
strcpy(test2, test);
printf("%s\n", test);
printf("%s\n", test2);
test2[5] = '_';
printf("%s\n", test);
printf("%s\n", test2);
printf("%c\n", *test);
free(test2);
}
吐出来
hello world
hello world
hello world
hello_world
h
推荐阅读
- oracle-apex - 用户更改页面时如何更改列值
- python - 当列表由字符串形式的数字组成时,为什么要设置的转换列表不尊重升序
- sql - 当您只有开始日期和结束日期时按特定月份查询
- node.js - MongoDB查询处理/获取内部数组(需要在内部数组中应用分页)
- cypress - React-typeScript:赛普拉斯测试
- c# - CPU序列号/主板序列号使用C#
- docker - 备份 Dockerized PostreSQL 数据库
- kotlin - 如何解决该错误?...在 Kotlin 反射中尚未完全支持
- typescript - 键入复杂的递归函数以在其内部使用而不会出现循环引用错误
- google-chrome - 如何使用批处理或 Powershell 将新人添加到 Google Chrome?