我有一个字符串如下:
char myString[] = "Amazing String";
我想遍历字符串并打印字符,如下所示:
int i = 0;
for (i = 0;i < sizeof(myString);i++){
printf("%s\n", myString[i]);
}
但由于某种原因,我得到整数值而不是字符本身。
抱歉,如果这是一个完全愚蠢的问题,但我看不出我做错了什么。
我有一个字符串如下:
char myString[] = "Amazing String";
我想遍历字符串并打印字符,如下所示:
int i = 0;
for (i = 0;i < sizeof(myString);i++){
printf("%s\n", myString[i]);
}
但由于某种原因,我得到整数值而不是字符本身。
抱歉,如果这是一个完全愚蠢的问题,但我看不出我做错了什么。
您想改为使用strlen()
字符串的长度,并且想要打印字符 ( %c
):
int i = 0;
for (i = 0;i < strlen(myString);i++){ // to get a string's length, use strlen
printf("%c\n", myString[i]); // to print a single character, use %c
}
为什么要使用strlen()
over sizeof()
?好吧,在这种特殊情况下,它不会有所作为。然而strlen()
,用于为您提供字符串中可打印字符的数量,而sizeof
将返回数组的大小(可打印字符 + 1 用于空终止符)。
int len1 = sizeof(myString); // 15
int len2 = strlen(myString); // 14
A)你不会看到打印出来的,所以它没有帮助
B)如果你习惯sizeof
在字符串上使用,你可能会在你将数组传递给的函数中使用它(在这种情况下,数组将衰减为指针) 然后你会得到 a 的大小而char *
不是字符数。如果您已经完成,同样适用于同一功能char *myString = "Amazing String";
"%s"
当您应该使用"%c"
单个字符时,您正在使用字符串的符号:
printf("%c\n", myString[i]);
// ^^
int i = 0;
for (i = 0;i < sizeof(myString);i++){
printf("%c\n", myString[i]);
}
%c 而不是 %s 和 sizeof() 不是一个好的选择。尝试strlen(myString)