字符串读取问题
为什么不能用scanf读取啊程序运行不会报错,但却不能把输入的字符串重新输出
//目标效果:
输入:hello
输出:hello
#include <stdio.h>
int main(){
char ch;
int i = 0;
for (; i < 123 ; i++){
scanf("%c", ch);
if(ch == '\n') break;
}
printf("%s", ch);
return 0;
} 为啥要用for循环?
直接scanf("%s", ch);
然后输出ch就好了 #include <stdio.h>
int main(){
char ch;
int i = 0;
for (; i < 123 ; i++){
scanf("%c", &ch);
if(ch == '\n') break;
}
printf("%s", ch);
return 0;
}
#include <stdio.h>
int main(){
char ch;
int i = 0;
scanf("%s", ch);
printf("%s", ch);
return 0;
} #include <stdio.h>
int main() {
char ch;
gets_s(ch);
puts(ch);
return 0;
} 本帖最后由 KevinHu 于 2020-5-9 08:59 编辑
方法一:scanf不能输入'\n',可以用getchar(),字符串之后还要加上'\0'(字符串的结束符)
#include <stdio.h>
int main(){
char ch;
int i = 0;
for (; i < 123 ; i++){
ch = getchar();
if(ch == '\n'){
ch = '\0';
break;
}
}
printf("%s", ch);
return 0;
}
方法二:直接输入
#include <stdio.h>
int main(){
char ch;
int i = 0;
scanf("%s", ch);
printf("%s", ch);
return 0;
} 有两处问题
#include <stdio.h>
int main(){
char ch;
int i = 0;
for (; i < 123 ; i++){
scanf("%c", &ch); //这里应该有&,scanf要给定变量的地址
if(ch == '\n') break;
}
ch='\0';//字符串结尾要写上结束字符'\0'
printf("%s", ch);
return 0;
} KevinHu 发表于 2020-5-9 08:54
方法一:scanf不能输入'\n',可以用getchar(),字符串之后还要加上'\0'(字符串的结束符)
scanf用%c是可以读取回车字符的
你的方法2也无法限定长度啊。
限定长度读取字符串一个用以下函数,该函数的长度(125)包含自动添加的字符串结尾符'\0'
#include <stdio.h>
int main(){
char ch;
int i = 0;
fgets(ch, 125, stdin);
printf("%s", ch);
return 0;
}
页:
[1]