如何解决无法使函数读取双精度数组
所以我有一段代码,我想存储5个随机名称,每个名称不超过10个字母
void printname(char *s);
int main() {
char NAME[10][5];
int NAMECOUNTER=0;
while(NAMECOUNTER<5) {
scanf("%s",NAME[NAMECOUNTER]);
printname(&NAME[NAMECOUNTER]);
NAMECOUNTER++;
}
}
void printname(char *s) {
printf("Hello %s\n",*s);
return;
}
And lets say i want the name to print itself through function Printname. Why does this not work and prints "Hello (null)"?
解决方法
我看到一个问题
char NAME[10][5];
应该是
char NAME[5][11];
这样,您将声明5个名称槽,每个名称槽最多10个字符。多余的空间用于字符串null终止符。
,你有
void printname(char *s) {
printf("Hello %s\n",*s);
return;
}
您需要
void printname(char *s) {
printf("Hello %s\n",s); // Took off the * from the *s
return;
}
因为s已经是您的指针。
,我修复了6个小故障。查看以#<num>
开头的评论
#include <stdio.h>
#include <stdlib.h>
void printname(char *s);
int main() {
char NAME[5][11] = {0}; // #1 value initialize to zero
// #2 the second dimension should be 11,since 10 letters plus null-character
int NAMECOUNTER=0;
while(NAMECOUNTER<5) {
scanf("%10s",NAME[NAMECOUNTER]); // #3 %10s width specifier,limit the length of name up to 10 character long
while ( (ret = getchar()) != '\n') ; // #4 trim exceeding characters
printname(NAME[NAMECOUNTER]); // #5 no &
NAMECOUNTER++;
}
}
void printname(char *s) {
printf("Hello %s\n",s); // #6 no *
return;
}
,
您的代码甚至不打印任何内容给我,只是冻结并关闭。也不是很清楚。
您正在混淆printname中的“ NAME”数组。此函数没有返回值,因为它具有空返回值,因此您不应键入任何返回值。另外,您还可以保存一些代码行,将其写在之前主要功能上,这是最佳做法:
void printname(){
//todo
}
int main(){
return 0;
}
这是实现功能的更好方法:
void printname(char Names[5][11],int index){
printf("Hello %s\n",Name[index]);
}
您可以将
您的代码段:
while(NAMECOUNTER<5) {
scanf("%s",NAME[NAMECOUNTER]);
printname(&NAME[NAMECOUNTER]);
NAMECOUNTER++;
}
您不必在打印名的第一个参数中加上“&”。
最佳:
for(NameCounter = 0; NameCounter < 5; NameCounter++){
scanf("%s",NAME[NAMECOUNTER]);
printname(NAME[NAMECOUNTER]);
}
还要确保您的代码缩进清晰。这是您的最终代码:
void printname(char Names[][11],Names[index]);
}
int main(){
char NAME[5][11];
int NAMECOUNTER;;
for(NAMECOUNTER = 0; NAMECOUNTER < 5; NAMECOUNTER++){
scanf("%s",NAME[NAMECOUNTER]);
printname(NAME,NAMECOUNTER);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。