我在大学有以下任务1.条款:
所以这是我的代码:
#include <stdio.h>
#include <stdlib.h>
char * readString(void){
int nChar = 1;
int cntr = 0;
char * str = NULL;
char z;
while((z = getchar()) != '\0'){
str = realloc(str, nChar * sizeof(char));
*(str+cntr) = z;
cntr++;
nChar++;
}
return str;
}
int main(int argc, char *argv[]) {
readString();
}
问题是我从未读过'\ 0'字符。 当我问我的教授时,他只说我也被允许使用getch,fgets和scanf从stdin中读取一个字符。
有人可以帮忙吗?我没有任何线索。
我现在编辑了我的代码。这是对的吗?
char * readString(void){
int nChar = 1;
int cntr = 0;
char * str = NULL;
char z;
while(1){
if((z = getchar()) != '\n'){
str = realloc(str, nChar * sizeof(char));
*(str+cntr) = z;
cntr++;
nChar++;
} else {
str = realloc(str, nChar * sizeof(char));
*(str+cntr) = '\0';
break;
}
}
return str;
}