【发布时间】:2020-09-03 11:19:52
【问题描述】:
在这里用 C 弦撕扯我的头发。我在一个项目中有一个函数,它返回一个 char * 指针。
我需要在使用它之前更改该字符串的一个元素。我读到的所有内容都说只使用具有 char[] 格式的 char 数组,但这与我当前状态下的项目不兼容,如果有的话。
我一直在拼命寻找将前 n 个字符复制到第二个 char 指针的方法,添加更新后的值,然后连接不需要 40 行的初始指针的剩余部分(减去更新的原始值)代码。
为此使用 fgetc 的每次尝试都未能将 unsigned int 写入“更新的指针”。我是否需要将 unsigned int 冲刺到 char 缓冲区或其他东西中?为什么感觉如此复杂?
在所需行为的第一步尝试失败的示例:
int main() {
char *s;
s = "babado = lubidee = popop =pew";
char * s1;
s1 = malloc(10);
memset(s1,'0',9);
strcpy(s1,fgetc(s));
for (int i = 0; i<4; i++){
strcat(s1,fgetc(s));
}
printf("%s",s1);
return 0;
}
【问题讨论】:
-
看起来
sprintf()可能是一个简单解决方案的一部分,请提供更多详细信息。 你尝试过什么?有哪些输入和相应的输出? -
我们需要实际代码供参考。
-
从您的描述中,听起来您想要一个字符串替换功能,但具体细节还不清楚。例如,您说“减去更新的原始值”,我们是否知道该值是什么或该值有多长,还是我们只知道它从字符 N 开始?如果我们限制新值与原始值具有相同字符长度的问题,解决方案会有所改变(或简化);但也许我们不能做出这样的假设。我也不清楚你为什么使用
fgetc,因为你似乎在这里使用不正确。 -
@Unn “我也不清楚你为什么要使用 fgetc” 我也是。可以假定该值,但拆分由位置定义。它是一个基于字符的“位图”,因此字符是从文本文件中读取的 0 或 1,我认为它们的长度相同,所以我们确实知道它从字符 n 开始,尽管稍后为了表示inode 表,我将只有条目号而不是确切的字符位置,但我使用分隔符来分割值,因为可变字符长度的通用解决方案似乎不是一个容易实现的解决方案。
-
我使用 fgetc 因为我找不到任何简单的方法来使用某种解构来拆分指针,例如 newStr = oldStr[:i] + newValue + oldStr[i:]
标签: c string pointers assign findandmodify