代码之家  ›  专栏  ›  技术社区  ›  christopher westburry

C写入字符串(要求特定函数)

  •  3
  • christopher westburry  · 技术社区  · 6 年前

    在搜索一个返回类型为int的特定函数时,我遇到了一点麻烦,int通过只取5个参数来更改char数组(字符串)的值,而函数不能从任何其他库导入,只有 stdio.h 也许 吧。

    源代码如下所示:

    #include <stdio.h>
    int main() {
      char buffer [50];
      int n;
    
      n= // some function here ;
    
      printf("%s",buffer,n);
      return 0; 
    }
    

    我一直在研究许多功能,但没有一个我知道或发现符合上述要求,因此我会感谢更多知识的人现在的帮助。提前谢谢。

    2 回复  |  直到 6 年前
        1
  •  2
  •   P.W    6 年前

    必须使用带有可变参数列表的函数。 两个这样的 stdio.h

    int sprintf(char * restrict s, const char * restrict format, ...);
    int snprintf(char * restrict s, size_t n, const char * restrict format, ...);
    

    它更改字符数组(字符串)的值

    下面是您想要的char数组( info ):

    char info[60];
    char name[] = "Christopher Westburry";
    char designation[] = "Learner"; 
    int reputation = 72;
    sprintf(info, "Welcome %s to StackOverflow!\nDesignation: %s\nReputation: %d",
        name, designation, reputation);
    printf("%s", info);
    
        2
  •  0
  •   Schwern    6 年前

    略读 Appendix B of the C Standard ,我看不到任何需要 确切地 5个参数并返回 int

    奥托 stdio.h 内景 去喝一杯 变量 中的参数数 scanf printf 家庭。一次能想出点什么。自 buffer 是未初始化的,代码想要打印它,大概我们要从 stdin . 这可能意味着一些人为的 扫描

    #include <stdio.h>
    int main() {
      char buffer [50];
      int n;
    
      // Same as
      // n = scanf("%40s", buffer);
      n = scanf(
          "%10s%10s%10s%10s",
          buffer,
          &buffer[10],
          &buffer[20],
          &buffer[30]
      );
    
      // printf("%s",buffer,n);
      printf("'%s' %d\n",buffer,n);
      return 0; 
    }
    

    如果这是他们期望的答案,那么这个练习是毫无意义的。

    打印F Undefined Behavior