无法在C中使用命令行中的数组将字符串连接在一起并一次读取一个字符

无法在C中使用命令行中的数组将字符串连接在一起并一次读取一个字符,c,arrays,string,string-concatenation,pointers,C,Arrays,String,String Concatenation,Pointers,我一直试图简单地将几个字符串连接成一个由空格分隔的长字符串,然后在打印到屏幕上时逐个读取这个新字符串的每个字符。我在这里找到了类似的主题,这些主题展示了如何使用void main()使用命令行参数,因此我希望我已经开始正确地执行此操作。我不确定我是否不理解ptr是如何正确工作的,或者我是否需要一个空字符,或者我是否没有正确地声明变量的空间来插入新结果。以下是我迄今为止的代码片段: [jeff@srv1 screensend]# cat tty_send.c #include <stdio.

我一直试图简单地将几个字符串连接成一个由空格分隔的长字符串,然后在打印到屏幕上时逐个读取这个新字符串的每个字符。我在这里找到了类似的主题,这些主题展示了如何使用void main()使用命令行参数,因此我希望我已经开始正确地执行此操作。我不确定我是否不理解ptr是如何正确工作的,或者我是否需要一个空字符,或者我是否没有正确地声明变量的空间来插入新结果。以下是我迄今为止的代码片段:

[jeff@srv1 screensend]# cat tty_send.c
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <string.h>


int main(int argc, char *argv[])
{
   int x;
   char text[256];
   int length;
   char str[20];

   if ( argc < 2 )
   {
      printf( "usage: %s <tty device file> <text to send>\n", argv[0] );
   }
   else
   {
      text[0] = '\0';       //give strcat a starting point to concatenate to
      for ( x = 1; x < argc; x++ ) {   //concatenate all the arguments into the variable 'text'
         strcat( text, argv[x] );
         if ( (x != (argc-1)) )    //re-add a space unless it's the last argument
         {
            strcat( text, " ");
         }
      }
   }
   printf("Sending '%s' to terminal \n", text);
   //char sizetest;
   //sizetest = sizeof(*argv);
   //printf("size: %s\n", sizetest);

   length = strlen(text);
   printf("length: %d\n", length);
   //printf("3rd character: %s\n", text[3]);
   //for ( x = 0; x < length-1; x++ ){
      char myChar = text[1];
      //printf(myChar);
      printf("out: %s\n", myChar);         //<------THIS GENERATES A SEGFAULT
   //}
}
[jeff@srv1 screensend]#
我在这里看到了一些关于连接的其他主题,但是我认为这里的问题是,当我尝试获取连接结果的第一个字符(本例中的第二个字符)时,我尝试获取ptr值并将其打印出来(如果是这种情况,我觉得这应该也可以工作,只是看起来像一个内存地址). 任何帮助都将不胜感激,我已经在谷歌上搜索了一个多星期,每天都在关注这个问题,但没有任何进展

谢谢,


杰夫

当你发现这条线时

printf(“输出:%s\n”,myChar)

给你带来麻烦。其余的都可以。将其更改为:

printf(“输出:%c\n”,myChar)

说明:

您正在尝试打印单个字符,因为此
printf
格式使用
%c
选项。使用
%s
会使
printf
需要以null结尾的字符串,因此它可能以您的字符开头,然后希望继续搜索第一个null字符。因为myChar只有一个字节,所以下一个字节不再定义,并且崩溃

希望这能有所帮助。

在此声明中

  printf("out: %s\n", myChar); 
您必须使用格式说明符
%c

  printf("out: %c\n", myChar); 
因为myChar不是字符数组,而是单个字符

 char myChar = text[1];

%s
请求
char*
。您可以使用
%c
显示单个字符。谢谢,这很有效。令人沮丧的是,这太简单了,我看得太深了。
 char myChar = text[1];