#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef char* string;
int main(void)
{
char *names[6];
int num_entries = 0,i=0,size=0;
string name = (string) malloc(sizeof(char) * 16);
printf("\nHow many names do you want to enter ? \n");
scanf("%d",&num_entries);
for(i=0 ; i < num_entries ; i++)
{
printf("\nEnter a name : ");
gets(name);
size = strlen(name);
names[i] = (string) malloc(sizeof(char)*size + 1);
strcpy(names[i],name);
}
for(i=0 ; i < num_entries ; i++)
puts(names[i]);
}
第一次在這個程序中的字符串沒有被讀取周圍循環的第一時間,但是能正常工作的所有後續調用,程序只需簡單的接受N個字符串,存儲和顯示他們。但它執行n-1次。解決方案也可以隨意指出指針,分配等方式中的任何錯誤,任何反饋都會被讚賞。字符串沒有被讀取周圍
'gets()'是邪惡的。考慮使用'fgets()'來代替。查看本頁底部附近的BUGS部分:http://manpages.debian.net/cgi-bin/man.cgi?query=fgets&apropos=0&sektion=0&manpath=Debian+7.0+wheezy&format=html&locale=en – alk
更改了獲取()調用fgets(name,16,stdin)仍然是bug – rootavish
@alk只是對改進做出評論,而不是提供對問題的回答。這就是爲什麼它是評論,而不是答案。 :)這是另一個評論:因爲你總是設置它們,所以你的整數預初始化程序是多餘的。 :) – lurker