我写了一个 C 程序,它接受用户输入的字符串并将其打印在屏幕上。
int main (void)
{
char* string;
scanf("%s", string);
printf("%s", string);
return 0;
}
但输出并不理想。
我输入了 foo
。程序打印出 (null)
。谁能解释为什么?
最佳答案
char* string;
这只是一个指向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;
}
或者,使用数组
#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;
}
关于c - (null) 在打印字符串时正在打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33626231/