【问题标题】:Want to store "char values" in array (in C language)想要将“char 值”存储在数组中(用 C 语言)
【发布时间】:2016-09-21 15:57:35
【问题描述】:

我想将“char 数据类型值”存储在一个数组中,但它不起作用。

首先,我尝试使用“gets” 但它给了我一个运行时错误。 代码是这样的

   int tmp = 0;


   char arr[100] = { 0, };
   while (arr[tmp]!=NULL)
   {
      gets(arr[tmp]);
      tmp++;
   }
   for (int rtmp = 0; rtmp < a; rtmp++)
    printf("%s ", arr[rtmp]);
   return 0;

在第二种方式中,我使用的是“scanf”,但我无法存储“char 数据类型(它应该是多个字符,如字符串)”,但只有一个字符可用。(我试过 %s ,但它不起作用) 另外,它不会打印数组的最后一个值。

int a = 0;
scanf("%d", &a); //determine how much I input values

int tmp = 0;
char arr[100] ={ 0 , };
for(tmp=0;tmp<a;tmp++)
{
    scanf("%c ",arr[tmp]);
    fflush(stdin);
}
for (int rtmp = 0; rtmp < a; rtmp++)
    printf("%c ", arr[rtmp]);
return 0;

对我来说最“相同”的是 不通知“a”值(“a”表示我输入了多少值) 并将“字符值”存储在数组中..

我该如何解决这个问题? 提前致谢!感谢您的帮助:)

【问题讨论】:

  • scanf("%c ",arr[tmp]); --> scanf("%c", &amp;arr[tmp]);
  • 在第一种情况下,您有一个 char 数组,但您尝试将 元素 视为(指向)char 数组的指针。
  • fflush(stdin); 调用未定义的行为。您不能刷新输入流。

标签: c arrays string char


【解决方案1】:

char 数据类型的数组称为 Sting。您可以使用scanf() 和gets() 获取字符串的输入。但是如果你使用 scanf(),字符串将通过按空格键或 Enter 来输入。但是,如果您使用gets(),则只能通过按Enter 键来输入。

示例 1:

char s[100];
scanf("%s", s);

示例 2:

char s[100];
gets(s);

现在,如果您想单独输入每个字符,您也可以这样做:

    char s[100], c;
    int n, i, j;
    scanf("%d", &n);
    getchar();
    for(i=0; i<n; i++) {
        scanf("%c", &s[i]);
    }

    s[i] = '\0';

现在看,我在scanf("%d", &amp;n);之后写了一个getchar(),因为当你输入n后按回车时,在n旁边的字符中也会有一个换行符('\n')作为输入。所以在这种情况下你必须这样做。

另外,您还可以使用scanf() 输入任何包含空格的字符串。只需这样做:

char s[100];
scanf("%[^\n]", s);

【讨论】:

    【解决方案2】:

    按照sn-p的代码不能输入单个字符。

        char arr[10] = {0};
        //unsigned char ch;
        unsigned int i = 0;
        printf("Enter the array elements\n");
        for(i = 0; i<10; i++)
        {
                scanf("%c", &arr[i]);
                printf("i = %d and arr[%d] = %c\n", i, i, arr[i]);
        }
    

    这个sn-p的结果就是这个图像。 enter image description here

    为避免此问题,建议输入不带换行符 '\n' 或不按回车键的字符。

    或者其他方法是使用数组作为字符串,并通过gets()输入字符,就像这样sn-p。

    char s[100];
    gets(s);
    

    【讨论】:

    • 请不要发布代码或文本输出的图像。请提供文本作为文本。
    • C 中不再有函数gets,它被删除为本质上不安全。请改用 fget。
    猜你喜欢
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2020-05-14
    • 2021-11-26
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    相关资源
    最近更新 更多