我相信这个问题已经被解答很多次了,但我还是不知道如何解决我的情况。我提取了包含警告生成代码的程序片段:
#include <stdio.h>
#include <stdlib.h>
inputData(int size, char *storage[size])
{
int iterator = -1;
do {
iterator++;
*storage[iterator] = getchar();
} while (*storage[iterator] != '\n' && iterator < size);
}
main()
{
char name[30];
inputData(30, name);
}
警告信息: $ gcc text.c text.c: 在函数 ‘main’ 中: text.c:18:5: 警告:从不兼容的指针类型传递参数 2 给 ‘inputData’ [默认启用] inputData(30, name); ^ text.c:4:1: 注意:期望的是 ‘char **’,但传入的参数类型为 ‘char *’ inputData(int size, char *storage[size])
编辑:
好的,我成功地尝试了一些语法并解决了我的问题。我仍然希望能够听取比我更有经验的人为什么需要这样做的原因。这是我所做的更改:
#include <stdio.h>
#include <stdlib.h>
inputData(int size, char *storage) // changed to point to the string itself
{
int iterator = -1;
do {
iterator++;
storage[iterator] = getchar(); // changed from pointer to string
} while (storage[iterator] != '\n'); // same as above
}
main()
{
char name[30];
inputData(30, name);
printf("%s", name); // added for verification
}
inputData()
函数内,代码应该有三个停止的原因:1)getchar()
返回了'\n'
2)getchar()
返回了EOF
3)没有更多的空间。 - chux - Reinstate Monica