c - 使用 for 循环将字符附加到 C 中的字符串中
问题描述
我仍然是 C 的新手,所以如果下面有任何错误,请原谅我。我已经在网上搜索过,但没有任何帮助。
现在,我有以下代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void appendStr (char *str, char c)
{
for (;*str;str++); // note the terminating semicolon here.
*str++ = c;
*str++ = 0;
}
int main(){
char string[] = "imtryingmybest";
char result[] = "";
for(int i = 0; i < strlen(string); i++){
if(i >= 0 && i <= 3){
appendStr(result, string[i]);
}
}
printf("%s", result);
}
基本上,我正在尝试使用 for 循环添加名为string
to的字符串的前 4 个字符。result
我上面的代码不起作用。我已经尝试过使用strcat
,strncat
但它们都不适合我。当我使用
strcat(result, string[i]);
它返回一个错误,指出无法读取内存。
我知道在这个例子中,如果我这样做可能会更容易
appendStr(result, string[0]);
appendStr(result, string[1]);
appendStr(result, string[2]);
appendStr(result, string[3]);
但是,我使用 for 循环的原因在此示例中无法解释。
总而言之,如果有人能向我解释如何在 for 循环中将单个字符附加到字符串,我将不胜感激。
解决方案
以下代码不使用您的方法,但成功地将前 4 个字符附加到result
#include <stdio.h>
#include <string.h>
int main()
{
// declare and initialize strings
char str[] = "imtryingmybest";
char result[5]; // the 5th slot is for \0 as all strings are null terminated
// append chars to result
strncat(result, str, 4);
// ^ ^ ^
// | | |- number of chars to be appended
// | | - string to be appended from
// | - string to append to
// print string
printf("result: %s\n", result);
return (0);
}
上面的结果是想要的:
>> gcc -o test test.c
>> ./test
result: imtr
让我知道是否有任何不清楚的地方,以便我进一步详细说明
推荐阅读
- reactjs - 组件重新渲染 React Material UI 时保持 Autocomplete 值
- javascript - Angular 表单:在 Angular 表单中找不到表单控件
- powershell - 如何使用 Azure DevOps REST API 设置发布定义工件
- php - 在 Laravel 中包含文件的自定义 APP_STORAGE
- c# - 从 VBA COM.Interop 访问 C# 类
- matlab - 如何在 MATLAB 中在我的原始图像上绘制线性回归线?
- python - Django/Python - 如何在 @property 函数为 True 的模型中获取记录计数?
- opencv - cv 文件存储读取 yaml 未指定“%YAML:1.0”行
- python - Pandas: Speeding up many string searches
- javascript - 在 Sequelize Javascipt 中建立关系