Cherles 于 2012-04-05 13:27:26发表:
这是神马啊?
olderlong 于 2012-04-04 22:35:24发表:
引用:另外还得给str分配足够的内存空间,否则会溢出,segment fault Guest from 166.111.66.x 发表于 2012-4-3 13:11
ggddver 于 2012-04-04 21:30:25发表:
11# Guest from 119.146.192.x 运行没问题的啊,用code block编译了一下,没问题
hqhcqhao 于 2012-04-04 15:11:28发表:
建议使用fgets #include #include int main(void) { char *str=NULL; str=malloc(sizeof(char)); printf("please input:"); fgets(str,7,stdin); printf("the string is:%s",str); return EXIT_SUCCESS; } 这样应该就能得到想要输出的结果。。
于 2012-04-04 13:22:23发表:
重新改了下: #include #include int main(void) { char *str=NULL; str=malloc(sizeof(char)+80); printf("please input:\n"); scanf("%s", str); printf("the string is:%s\n", str); return EXIT_SUCCESS; } 这次编译不出现警告,运行printf打印不出来,就看到光标闪烁。。。。。。。
卡卡暗那 于 2012-04-04 11:20:50发表:
把scanf("please input:%s\n",str)这句改成两行: printf("please input:"); scanf("%s",str); 这样应该可以了
于 2012-04-04 10:01:34发表:
这可不是BASIC语言,哈哈
于 2012-04-03 20:52:45发表:
只能把“please input:”分开写出来吗,不能放在scanf里面哦?????
ggddver 于 2012-04-03 20:34:00发表:
[i=s] 本帖最后由 ggddver 于 2012-4-3 20:36 编辑 [/i]你的scanf语句有问题啊,scanf中的please input 这个完全不需要的, 你要是想看到这个应该是使用printf("please input:\n"); scanf语句改为scanf("%s", str); 最终的程序应该为 #include #include int main(void) { char *str; printf("please input:\n"); scanf("%s", str); printf("the string is:%s\n", str); return EXIT_SUCCESS; } 但是这个程序是有问题的,str是个字符指针,应该是有初始化的,但是这个里面没有给出初始化啊 用gcc编译的时候最好加上-Wall这个选项 $ gcc -Wall txt.c -o txt txt.c: 在函数‘main’中: txt.c:6:10: 警告:此函数中的‘str’在使用前未初始化 这个是我改后编译给出的警告
于 2012-04-03 13:11:46发表:
另外还得给str分配足够的内存空间,否则会溢出,segment fault
于 2012-04-03 13:06:59发表:
引用: int main(void) { char *str; printf("please input: "); scanf("%s",str); printf("the string is:%s\n", str); return EXIT_SUCCESS; }
xuheng 于 2012-04-03 05:48:02发表:
看不懂这个,帮顶下
jsbxw 于 2012-04-03 04:46:48发表:
不懂的路过
shaoguangleo 于 2012-04-02 23:08:20发表:
str前面加上&
Cherles 于 2012-04-05 13:27:26发表:
这是神马啊?
olderlong 于 2012-04-04 22:35:24发表:
呵呵,lz 应该找本C的书看看。
ggddver 于 2012-04-04 21:30:25发表:
11# Guest from 119.146.192.x
运行没问题的啊,用code block编译了一下,没问题
hqhcqhao 于 2012-04-04 15:11:28发表:
建议使用fgets
#include
#include
int main(void)
{
char *str=NULL;
str=malloc(sizeof(char));
printf("please input:");
fgets(str,7,stdin);
printf("the string is:%s",str);
return EXIT_SUCCESS;
}
这样应该就能得到想要输出的结果。。
于 2012-04-04 13:22:23发表:
重新改了下:
#include
#include
int main(void)
{
char *str=NULL;
str=malloc(sizeof(char)+80);
printf("please input:\n");
scanf("%s", str);
printf("the string is:%s\n", str);
return EXIT_SUCCESS;
}
这次编译不出现警告,运行printf打印不出来,就看到光标闪烁。。。。。。。
卡卡暗那 于 2012-04-04 11:20:50发表:
把scanf("please input:%s\n",str)这句改成两行:
printf("please input:");
scanf("%s",str);
这样应该可以了
于 2012-04-04 10:01:34发表:
这可不是BASIC语言,哈哈
于 2012-04-03 20:52:45发表:
只能把“please input:”分开写出来吗,不能放在scanf里面哦?????
ggddver 于 2012-04-03 20:34:00发表:
[i=s] 本帖最后由 ggddver 于 2012-4-3 20:36 编辑 [/i]
你的scanf语句有问题啊,scanf中的please input 这个完全不需要的,
你要是想看到这个应该是使用printf("please input:\n");
scanf语句改为scanf("%s", str);
最终的程序应该为
#include
#include
int main(void)
{
char *str;
printf("please input:\n");
scanf("%s", str);
printf("the string is:%s\n", str);
return EXIT_SUCCESS;
}
但是这个程序是有问题的,str是个字符指针,应该是有初始化的,但是这个里面没有给出初始化啊
用gcc编译的时候最好加上-Wall这个选项
$ gcc -Wall txt.c -o txt
txt.c: 在函数‘main’中:
txt.c:6:10: 警告:此函数中的‘str’在使用前未初始化
这个是我改后编译给出的警告
于 2012-04-03 13:11:46发表:
另外还得给str分配足够的内存空间,否则会溢出,segment fault
于 2012-04-03 13:06:59发表:
xuheng 于 2012-04-03 05:48:02发表:
看不懂这个,帮顶下
jsbxw 于 2012-04-03 04:46:48发表:
不懂的路过
shaoguangleo 于 2012-04-02 23:08:20发表:
str前面加上&