【问题标题】:C - Chaining chars and put it in a variableC - 链接字符并将其放入变量中
【发布时间】:2013-11-06 16:13:22
【问题描述】:

我正在尝试操作文本,文本存储在一个变量中,我想将文本保存到字符“:”,但这对我不起作用

这就是我所做的:

void proccessLine(char *line)
int i=0;
char name=' ';
while(line[i+1]!=':')
{
    name=name+line[i];
    i++;
}
printf("%s\n", &name);

【问题讨论】:

  • Char 只是一个字符,你可以像字符串一样使用它(纯 c 中的字符数组)
  • 我同意@icrew 你需要一个字符串。或者char name[256] 或者char *name = NULL; 然后malloc 一些空间。
  • 另外,+ 运算符也没有在字符串上定义。由于您没有将 name 定义为字符串,因此您正在做的是将字符的 values 添加到单个数字中(在 255 处溢出),然后将其打印为指针.

标签: c text chaining


【解决方案1】:

正如人们在 cmets 中提到的那样:

int i=0;
char name[256];
while(line[i+1]!=':' && i < 255)
{
   name[i] = line[i];
   i++;
}
name[i] = '\0';
printf("%s\n", name);

在 C 中,不存在“字符串”,只有 chars 的数组。在string.h 中有一些函数可以处理字符串(它们实际上在char 指针上工作,这就是数组的本质)。因此,+ 运算符在 C 中不能用作字符串连接,您必须为此使用 strncat

更多信息请点击此处:http://www.cprogramming.com/tutorial/c/lesson9.html 或任何 Google 搜索“C 字符串”(尽管您也确实获得了一些 NSFW 命中 ;-))。

【讨论】:

    【解决方案2】:

    作为一种替代方法,您可以编写一个函数来删除第一次出现的: 并返回结果。

    此函数将返回直到: 符号的字符串:

     char * StripColon(char *str)
     {
         if(str) return strtok(str, ":");
         return "";
    
     }
    

    以下是如何使用此函数的示例:(以及其他原型返回 char *

    #include <ansi_c.h>
    char * StripColon(char *str);
    int  main()
     {
         char line[]="this is a new: string"
         char newString[80];
         newString[0]=0;
         strcpy(newString, StripColon(line));
         printf("String without \":\" %s\n", newString);
    
          getchar();
          return 0;
     }
    

    【讨论】:

      猜你喜欢
      • 2014-08-21
      • 1970-01-01
      • 2020-09-21
      • 2019-06-20
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 2011-01-25
      相关资源
      最近更新 更多