所以我相信這個問題已經回答了很多次,但是我無法看到如何解決我的情況。我把我的節目的片段,包含我的警告生成代碼:傳遞指向字符串的指針,不兼容的指針類型
#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:在函數 '主': 的text.c :18:5:warning:從不兼容的指針類型[默認啓用]傳遞'inputData'的參數2 inputData(30,name); ^的text.c:4:1:注:應爲 '字符**',但參數的類型的 '字符*' inputData(INT大小,字符*存儲[大小])
編輯:
好的,所以我設法使用一些語法來解決我的問題。我仍然不會;不介意聽到有人比我更瞭解情況,爲什麼這是需要的。這裏是我改變的:
#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 ()'返回'EOF' 3)沒有更多空間。 – chux 2014-09-10 19:14:35