【发布时间】:2014-04-23 20:36:36
【问题描述】:
我必须输入一个字符串并将其显示到标准输出。
理想的解决方案是将字符串获取到 char 指针数组中,但是我在 scanf 上遇到错误,我推测是因为 char 指针字符串解决方案没有为其分配空间。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char *charString;
printf("Input string - max %i caratteri: ",CHARARRAYSIZE);
scanf("%s", charString);
printf("%s",charString);
return EXIT_SUCCESS;
}
因此,我求助于将字符串获取到一个 char 数组中,然后将 (strcpy) 复制到一个 char 指针 string.v 在这种情况下,我收到一个警告,说在 strcpy 调用 sayng 时使用了 strcpy 而没有被初始化。我该如何解决这个问题?
请在下面找到第二种情况的代码。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CHARARRAYSIZE 16
int main(void) {
char *charString;
char charArray[CHARARRAYSIZE];
printf("Input string - max %i characters: ",CHARARRAYSIZE);
scanf("%s", charArray);
strcpy(charString,charArray);
printf("%s",charString);
return EXIT_SUCCESS;
}
有什么方法可以实现我的目标并避免使用 char 数组
【问题讨论】:
-
charString仍然没有任何内存分配给它,那么您如何期望复制操作成功呢?您需要使用malloc为指向的指针分配一些堆空间。