c - [C]关于 %s 、 %c 的字符串和数组

标签 c string printf

为什么我应该在这里使用 %c 而不是 %s? 如果我使用 %s 将会出错

printf("%c",Array[i]);

当我定义char Array[STRSIZE]="apple";时此处应使用 %s

那么如何正确使用%s和%c呢?

代码:

#include<stdio.h>
#include<string.h>
   int main(){
      #define STRSIZE 81

         char Array[STRSIZE];
         printf("Enter a string: ");
         gets(Array);
         printf("\nYou entered: ");
         int i ;
    for(i=0;i<strlen(Array);i++){

         printf("%c",Array[i]);
    }
   return 0 ;} 

结果:

Enter a string: apple
You entered: apple

最佳答案

%c打印 char%s打印一个字符串,因此它需要一个指向 char 的指针.

char Array[STRSIZE];

在这里,Arraychar 的数组,所以表达式 Array传递给函数的指针衰减为指向 char 的指针。所以它可以用于%s (假设字符串有效)。

Array[i]然而,它不是一个字符串。这是一个char ,因此可以将其传递为 %c ,但不适用于%s 。所以可能性是:

  • printf("%s",Array); 打印字符串
  • 使用 printf("%c",Array[i]); 打印该字符串的单个字符。通过迭代字符串,您也可以像这样打印整个字符串

关于c - [C]关于 %s 、 %c 的字符串和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53741237/

相关文章:

C 设置位问题

C++ 连接 LPCTSTR

string - 如何在Matlab中提取字符串向量的第一个单词?

objective-c - 解析 Objective-C printf 格式字符串?

c - read() 函数不允许在换行符后打印任何内容

c - c中的结构数组在读取c中的文本文件后未获取其所有值

c - C中的嵌套if语句

c - 如何将二维数组的每个元素递增 2

c++ - cin.get() 空行问题

c - 用于接受和打印字符串的非常小的 C 程序中的段错误