我希望获得代码2 结果,但如果我使用代码1 ,则会产生一些奇怪的结果。
我认为数字116是t
的 ASCII 代码。但我无法理解代码1 中发生的事情。
您能否解释一下代码1和代码2之间的区别?
代码1
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
int main(){
char t;
char *p = &t;
char *s;
int count=0;
char test[40] = "Test String partial copy in C\n";
s = strchr(test,'S');
while(!isblank(*s)){
*(p+count) = *s;
s++;
printf("%d\n",count);
count++;
}
*(p+count) = '\0';
printf("%s\n",p);
}
结果: 0 116 117 118 119 120 Sy
代码2
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
int main(){
char *p = (char*)malloc(sizeof(char));
char *s;
int count=0;
char test[40] = "Test String partial copy in C\n";
s = strchr(test,'S');
while(!isblank(*s)){
*(p+count) = *s;
s++;
printf("%d\n",count);
count++;
}
*(p+count) = '\0';
printf("%s\n",p);
}
结果:0 1 2 3 4 5字符串