遇到字符串问题,程序崩溃

时间:2016-04-20 15:11:17

标签: c windows c-strings

我是一个试图学习调用strings的新手。所以这是我写的一个程序,我正在尝试实现一个程序,每行显示一个名称的所有字符。该程序成功编译,但在输入名称后,程序崩溃。谁能告诉我我做错了什么?非常感谢!

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

int main(void)
{    
  char s;

  printf("Enter name\n");
  scanf("%c", s);

  int i;
  for( i = 0; i < strlen(s); i++);
  printf("%c, s[i]");

  return 0;
}

3 个答案:

答案 0 :(得分:0)

有很多问题:

你想要这个:

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

int main(void)
{    
  char s[100];     // array of 100 chars

  printf("Enter name\n");
  scanf("%s", s);  // read name from user into s array

  int i;
  for (i = 0; i < strlen(s); i++)
    printf("%c", s[i]);    

  return 0;
}

高级主题:

这一行:

for (i = 0; i < strlen(s); i++)

虽然正确,但效率低下。

以下代码更好:

int len = strlen(s);

for (i = 0; i < len; i++)

找出原因留给读者作为练习。

答案 1 :(得分:0)

您的计划中有几个问题。首先,您只为单个.Filter(factory => factory.Add(model=> model.SubscriptionValidStatus).IsEqualTo("Aktiv")) 分配了内存,但是您希望在其中存储一个名称(由多个char组成)。

此外,您有多个语法错误,例如for循环后的chars;调用中放错的"

如果我理解正确你正在寻找这样的东西:

printf

答案 2 :(得分:0)

一种方法,在评论中有解释:

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

int main(void)
{
  char s[] = {"\0"}; //s should be a char array type, it needs explicit size or initialization
  printf("Enter name\n");
  scanf("%s", s);    //format specifier must match data type
  int len = strlen(s);
  for( int i = 0; i < len; i++)
      printf("%c\n", s[i]);//format specifier must match data type
  return 0;
}

希望这可以提供帮助。