我寫我自己的getline
功能K後跟& R C書使用c中的指針覆蓋內存的可能性?
void getline(char * const str)
{
int c;
char* temp = str;
while ((c=getchar()) != '\n') {
*temp = c;
temp++;
}
*temp = '\0'
}
而且它用來初始化字符串
char *str1, *str2;
printf("Type string 1: ");
getline(str1);
printf("Type string 2: ");
getline(str2);
只是想知道的是,如果存儲位置str1
和str1
點是非常接近,然後getline(str2)
覆蓋字符串1中的內容?
這是可能的我怎麼能避免它?謝謝!
更新:
是程序停止執行上面的代碼片斷,但下面的代碼工作:
#include <stdio.h>
main()
{
char* str;
char* temp = str;
int c;
while ((c=getchar()) != '\n') {
*temp = c;
++temp;
}
*temp = '\0';
printf("%s\n", str);
}
這裏str
也未初始化字符指針,但爲什麼deoesn't它給我一個錯誤?
這是行不通的? – ameyCU
'char * str1,* str2;'未初始化。所以改爲'char str1 [128],str2 [128];' – BLUEPIXY