首页 > 解决方案 > 使用 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 循环添加名为stringto的字符串的前 4 个字符。result我上面的代码不起作用。我已经尝试过使用strcatstrncat但它们都不适合我。当我使用

strcat(result, string[i]);

它返回一个错误,指出无法读取内存。

我知道在这个例子中,如果我这样做可能会更容易

appendStr(result, string[0]);
appendStr(result, string[1]);
appendStr(result, string[2]);
appendStr(result, string[3]);

但是,我使用 for 循环的原因在此示例中无法解释。

总而言之,如果有人能向我解释如何在 for 循环中将单个字符附加到字符串,我将不胜感激。

标签: cstring

解决方案


以下代码不使用您的方法,但成功地将前 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

让我知道是否有任何不清楚的地方,以便我进一步详细说明


推荐阅读