【问题标题】:How to print the nth term of a string using scanf function?如何使用 scanf 函数打印字符串的第 n 项?
【发布时间】:2019-08-29 11:40:33
【问题描述】:

用户输入字符串后控制台不会做任何事情。

我有代码可以使用 char string="enteraword" 并取出整个 printfscanf 函数,但是我需要代码才能使用 scanf 函数。

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

int main()
{
  char* string;
  printf("Enter a word: ");
  scanf("%s", string);
  char c=string[1];
  printf("The second letter in %s is %c", string, c);
  return 0;
}

【问题讨论】:

  • 你有一个指针 (string),但是 它指向哪里? C 没有任何类型的动态数组。
  • 更改 char* 字符串; to char* string = malloc(10);
  • @xing,谢谢它的工作:)

标签: c string pointers char c-strings


【解决方案1】:

这段代码有未定义的行为,你将一个未初始化的指针传递给scanf(),要求它在那里存储一个字符串。

另外,请记住 %s 将停在空白处,因此这里的“术语”应该是什么意思非常不清楚。

试试例如:

char string[1024];
if(scanf("%1023s", string) == 1 && string[0] != '\0')
{
  const char c = string[1];
  printf("The second letter of '%s' is '%c'\n", string, c);
}

【讨论】:

  • @nicomp 没错,我相信并编辑了。甚至在 ideone 上测试我的代码。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-07
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多