【发布时间】:2014-09-10 14:26:37
【问题描述】:
所以我确信这个问题已经回答了很多次了,但是我无法理解如何解决我的问题。我对包含我的警告生成代码的程序进行了 sn-p:
#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: 警告:从不兼容的指针类型传递“inputData”的参数 2 [默认启用] 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()内部,代码应该有3个理由停止:1)getchar()返回'\n'2)getchar()返回EOF3)没有更多空间。
标签: c string pointers arguments