Sna*_*yes 2 c string printf pointers scanf
我写了一个C程序,它从用户那里获取一个字符串输入并将其打印在屏幕上.
int main (void)
{
char* string;
scanf("%s", string);
printf("%s", string);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是输出是不可取的.
我给了输入foo.程序打印出来(null).谁能解释为什么?
char* string;
Run Code Online (Sandbox Code Playgroud)
这只是指向a的指针char.它还没有指向任何记忆.您需要为要保留的字符分配内存.
您可以使用分配内存 malloc()
#include<stdio.h>
#include<stdlib.h>
int main(void){
char *string;
string = malloc(100); //string of length 100
if(string == NULL){
printf("Error\n"); //if malloc() fails
}
if((scanf("%99s", string)) != 1){ //if scanf() fails
printf("Error, Fix it!\n");
exit(1);
}
printf("%s\n",string);
free(string);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
或者,使用数组
#include<stdio.h>
#include<stdlib.h>
int main(void){
char string[100];
if((scanf("%99s", string)) != 1){
printf("Error, Fix it!\n");
exit(1);
}
printf("%s\n",string);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |