gpt4 book ai didi

c - (null) 在打印字符串时正在打印

转载 作者:行者123 更新时间:2023-12-02 05:59:17 26 4
gpt4 key购买 nike

我写了一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com