以下是我寫的程式碼,在函數 READ_INPUT 內的 while 迴圈,我要怎麼做才能讓它不要繼續讀。
當我輸入完三個字串後,再按一次換行,我想讓它結束,但是判斷 gets(TEMP) != NULL 沒辦法達成。
我有試一次 scanf("%s", TEMP) != EOF 似乎也不行,還是我哪裡寫錯了呢?
可以幫我看看嗎?
/*
Input:
world
c++
Mary
Output:
hello, world
hello, c++
hello, Mary
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char **INPUT;
char *STRING_CONNECT(char *NOW_INPUT){
char *HELLO;
HELLO = (char *) malloc(sizeof(char *));
strcpy(HELLO, "hello, ");
strcat(HELLO, NOW_INPUT);
return HELLO;
}
void READ_INPUT(void){
char *TEMP;
char **NEXT;
int STRING_NUM = 1;
TEMP = (char *) malloc(sizeof(char *));
NEXT = INPUT;
while( gets(TEMP) != NULL){
++STRING_NUM;
strcpy(*NEXT, STRING_CONNECT(TEMP));
INPUT = (char **) realloc(INPUT, sizeof(*INPUT) * STRING_NUM);
NEXT = INPUT + (STRING_NUM - 1);
*NEXT = (char *) malloc(sizeof(**INPUT));
}
}
int main(void){
INPUT = (char **) malloc(sizeof(char **));
*INPUT = (char *) malloc(sizeof(char *));
READ_INPUT();
return 0;
}
以下是我寫的程式碼,在函數 READ_INPUT 內的 while 迴圈,我要怎麼做才能讓它不要繼續讀。
當我輸入完三個字串後,再按一次換行,我想讓它結束,但是判斷 gets(TEMP) != NULL 沒辦法達成。
我有試一次 scanf("%s", TEMP) != EOF 似乎也不行,還是我哪裡寫錯了呢?
可以幫我看看嗎?
/*
Input:
world
c++
Mary
Output:
hello, world
hello, c++
hello, Mary
*/
#include
#include
#include
char **INPUT;
char *STRING_CONNECT(char *NOW_INPUT){
char *HELLO;
HELLO = (char *) malloc(sizeof(char *));
strcpy(HELLO, "hello, ");
strcat(HELLO, NOW_INPUT);
return HELLO;
}
void READ_INPUT(void){
char *TEMP;
char **NEXT;
int STRING_NUM = 1;
TEMP = (char *) malloc(sizeof(char *));
NEXT = INPUT;
while( gets(TEMP) != NULL){
++STRING_NUM;
strcpy(*NEXT, STRING_CONNECT(TEMP));
INPUT = (char **) realloc(INPUT, sizeof(*INPUT) * STRING_NUM);
NEXT = INPUT + (STRING_NUM - 1);
*NEXT = (char *) malloc(sizeof(**INPUT));
}
}
int main(void){
INPUT = (char **) malloc(sizeof(char **));
*INPUT = (char *) malloc(sizeof(char *));
READ_INPUT();
return 0;
}
只要 while(gets(TEMP)) 即可
至於結束字元是...
鍵盤 Ctrl+Z