当前位置: 代码迷 >> C语言 >> 关于char*
  详细解决方案

关于char*

热度:521   发布时间:2006-11-07 14:50:25.0
关于char*

我想问一下用char*从命令行接收一个字符串可不可以?
例如;
#include<stdio.h>
int main ()
{
char *s;
scanf("%s",&s);
return 0;
}

[此贴子已经被作者于2006-11-7 16:37:14编辑过]

搜索更多相关的解决方案: char  

----------------解决方案--------------------------------------------------------
应该这样吧?
#include<stdio.h>
int mian ()
{
char s;
scanf("%s",&s);
return 0;
}
不好意思,会错义了,以为你想接收一个字符。scanf函数用法如下:(粘贴过来的,有点乱,凑合一下)

int scanf(const char *format, arg_list)
arg_list 要输入的参数变量列表,多个变量以逗号分隔
format 参数输入的格式,定义格式为:%[flags][width][.perc] [F|N|h|l]type

规定数据输入方式,具体如下:
1.type 含义如下:
d 有符号10进制整数 i 有符号10进制整数 o 有符号8进制整数 u 无符号10进制整数
X/x 无符号16进制整数 F/f 浮点数 E/e 用科学表示格式的浮点数 g 使用%f和%e表示中的较精确者来表示浮点数 G 同g格式,但表示为指数 c 单个字符 s 字符串 % 输入百分号本身
p 输入一个指针,near指针表示为:XXXX far 指针表示为:XXXX:YYYY n 相连参量应是一个指针,其中存放已写字符的个数

2.flags 规定输入格式,取值和含义如下:
无 右对齐,左边填充0和空格 + 左对齐,右边填充空格 - 在数字前增加符号 + 或 - 一个空格 只对负数输入符号 # 当type=c,s,d,i,u时没有影响 type=o,x,X时,在数值前增加'0'字符 type=e,E,f时,总是使用小数点 type=g,G时,除了数值为0外总是显示小数点

3.width 用于控制输入数值的宽度,取值和含义如下:
n(n=1,2,3...) 宽度至少为n位,不够以空格填充 0n(n=1,2,3...) 宽度至少为n位,不够左边以0填充 * 格式列表中,下一个参数还是width

4.prec 用于控制小数点后面的位数,取值和含义如下:
无 按缺省精度显示 .0 当type=d,i,o,u,x时,没有影响 type=e,E,f时,不显示小数点 .n(n=1,2,3...) 当type=e,E,f时表示的最大小数位数 type=其他,表示显示的最大宽度 .* 格式列表中,下一个参数还是width

5.F|N|h|l 表示指针是否是远指针或整数是否是长整数
F 远指针 n 近指针 h 短整数或单精度浮点数 l 长整数或双精度浮点数

[此贴子已经被作者于2006-11-7 15:01:42编辑过]


----------------解决方案--------------------------------------------------------
语法上没有错误.
mian ()写错了,main()
----------------解决方案--------------------------------------------------------
以下是引用aisqa在2006-11-7 14:52:59的发言:
应该这样吧?
#include<stdio.h>
int main ()
{
char s[12];
scanf("%s",&s);
return 0;
}

这个就错了.
----------------解决方案--------------------------------------------------------
main()
{
char *s;
printf("输入*S:");
scanf("%s",s); //去掉地址符"&"就可以啦(因为s是指针,指针就是地址,哈哈~)
printf("%s\n",s);
}
可以啊
----------------解决方案--------------------------------------------------------

以下是引用jqbbccn在2006-11-7 15:04:08的发言:
main()
{
char *s;
printf("输入*S:");
scanf("%s",s); //去掉地址符"&"就可以啦(因为s是指针,指针就是地址,哈哈~)
printf("%s\n",s);
}
可以啊

你试着输入一些字符,看能不能输出...


----------------解决方案--------------------------------------------------------
对,我和楼上的看法差不多。

char *s; 这一句只是定义一个指针,它指向一个字符型变量,
使用scanf("%s",s); 之后应该就是把这个字符串的首地址付给 s。以后就可以通过S 来找到这个字符串了
----------------解决方案--------------------------------------------------------
#include <stdio.h>
main()
{
char * s;
printf("shuru string:\n");
scanf("%s", s);
printf("%s\n", s);
}
这一个是可以正常运行的。
我试验过了。
但是,下面这个不行。
#include <stdio.h>
main()
{
char s;
printf("shuru string:\n");
scanf("%s", &s);
printf("%s\n", s);
}
为什么呢?

[此贴子已经被作者于2006-11-7 15:19:47编辑过]


----------------解决方案--------------------------------------------------------
在C语言中,,没有"字符串"变量,,只有字符变量,,如果想得到一个字符串,,只能通过数组的形式或者指针.
基础的东西不能丢
----------------解决方案--------------------------------------------------------
#include <stdio.h>
main()
{
char s;
printf("shuru string:\n");
scanf("%s", &s);
printf("%s\n", s);
}

----------------解决方案--------------------------------------------------------
  相关解决方案