簡體   English   中英

如何將參數串聯到C中的字符串中?

[英]How can I concatenate arguments in to a string in C?

我做了類似...

str = strcpy(str, arg[1]);
str = strcat(str, " ");
str = strcat(str, arg[2]);

如果我有5個參數怎么辦?

我該如何解決?

編寫一個循環:

char str[HUGE];
strcpy(str, argv[1]);

for (int i = 2; i < argc; ++i)
{
  strcat(str, " ");
  strcat(str, argv[i]);
}

您首先應該檢查argc至少為1,最好改用長度受限的函數strncpystrncat ,並跟蹤每個參數的長度。

循環FTW

for(i = 1; i < argc; i++)
{
    str = strcpy(str, arg[i]);
    str = strcat(str, " ");
}

請記住,這將在末尾添加尾隨空格。 您可以通過在該位置插入NUL字符來刪除它。 也不要忘記在str緩沖區中分配足夠的空間,並放置一個終止NUL字符。

您首先需要檢查所需存儲空間的長度。 如果您有各種參數,則正確的答案是使用循環。

int i;
int needed = 1;                        // plus end of string mark

for(i = 1; i < argc; ++i) {
    needed += strlen( argv[ i ] ) + 1; // plus space
}

然后,您需要保留所需的內存量,並使用另一個循環來連接字符串:

char * storage = (char *) malloc( sizeof( char ) * needed );

strcpy( storage, argv[ 1 ] );

for( i = 2; i < argc; ++i) {
    strcat( storage, " " );
    strcat( storage, argv[ i ] );
}

最后,使用空間並釋放它。

printf( "%s\n", storage );
free( storage );

希望這可以幫助。

#include <stdio.h>
#include <string.h>

int main (int argc, char *argv[])
{
  int i;
  int len = 0;
  char *str = "";
  for(i=1; i<argc; i++)
  {
    len += strlen(argv[i]) + 1;
  }
  str = (char *)malloc(sizeof(char) * len);
  for(i=1; i<argc; i++)
  {
    strcat(str, argv[i]);
    strcat(str, " ");
  }
  printf("str = [%s]\n", cmds);
  return 0;
}

您可以在arg數組上循環。 喜歡

strcpy(str, arg[1]);
strcat(str, " ");

for ( i = 2; i < arg_array_size; i++ )
{
   strcat(str, arg[i]);
   strcat(str, " ");
}

您無需將返回值分配給str 另外,如果您的字符串存儲在靜態數組中,那么它是不正確的。

使用以下構造,您可以根據需要串聯。

char str[MAX];

strcpy (str, "");

for (i=0; i<argc; i++)
{
   strcat (str, argv[i]);
   strcat (str, " ");
}

此處argc保存最大元素的數量。 請注意, MAX應該足夠大以容納所有串聯的字符串。 你也可以

char *str;
str = malloc (sizeof (char) * MAX);

動態分配內存。 當以這種方式分配時,請記住在使用完字符串后釋放分配的內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM