我的程序应该给我一个单词的长度,最高和最低字符。
编译程序时出现错误:
error: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[64]’ [-Werror=format=]
scanf("%62s", & cString);
如果有人可以用这个,那就太好了!
#include <stdio.h>
int stringstats(char sString[], char *cGroesster, char *cKleinster)
{
//Variablen deklarieren
int iLength = 0;
int i = 0;
*cKleinster = sString[0];
*cGroesster = sString[0];
while (sString[iLength] != '\0')
{
iLength++;
}
for (i = 0; i <= iLength - 1; i++)
{
if (sString[i] < *cKleinster)
{
*cKleinster = sString[i];
}
if (sString[i] > *cGroesster)
{
*cGroesster = sString[i];
}
}
return iLength;
}
//Funktion deklarieren
int stringstats(char[], char *, char *);
#define LENGTH 64
int main(void)
{
//Variablendeklaration
char cString[LENGTH] = {0};
int iLength = 0;
char cGroesster = 0;
char cKleinster = 0;
while (1)
{
//Benutzereingabe String
printf("Bitte einen String eingeben ('q' fuer Beenden) \n");
scanf("%62s", & cString);
//that`s where my problem is
//Abbruchbedingung pruefen
if (cString[0] == 'q' && cString[1] == '\0')
{
break;
}
//Funktion stringstats aufrufen
iLength = stringstats(cString, &cGroesster, &cKleinster);
printf("Laenge: %i \n", iLength);
printf("Kleinster Buchstabe: %c \n", cKleinster);
printf("Groesster Buchstabe: %c \n\n", cGroesster);
}
return 0;
}
最佳答案
这不起作用的原因是大多数初学者都不了解的C功能。关于scanf
想要的东西:它想要一个指向char
的指针。尽管正确使用(&)运算符的引用来获取指向它的指针,但是对于这种用法,这实际上是不正确的,因为在C中,数组(包括字符串)是指针访问的连续内存块,因此,您可以不要使用引用运算符。
因此,请执行以下操作:
scanf("%62s", & cString);
正在传递指向
char
值的指针(不是错字)的指针。如果函数需要一个字符串,请不要传递对它的引用。现在,让我们看看您的错误消息。编译器正在为您提供:
format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[64]
它告诉您的是您没有字符串。相反,您有一个指向
char
的指针数组。更改:
char cString[LENGTH] = {0};
至:
char cString[LENGTH];
并更改:
scanf("%62s", & cString);
至:
scanf("%62s", cString);
那应该可以解决您的问题。
关于c - 错误:格式为“%s”,期望参数类型为“字符*”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27083094/