Porphyring 发表于 2021-4-27 13:16:26

PTA下字符串输入输出验证2:循环配合%c读入串发生没想到的“段错误”。

{:10_269:}

PTA下字符串输入输出验证2:循环配合%c读入串发生没想到的“段错误”。
输入并输出一个不带空格的字符串。注意本题输入样例的字符串后教师设置时不带换行。PTA目前是%s和gets可以正确读入。循环配合%c读入(while((s=getchar())!='\n') i++ ; s=0; )会发生 “段错误”、测试失败。

输入格式:
Hellochina!

输出格式:
Hellochina!

输入样例:
Hellochina!
输出样例:
Hellochina!
代码长度限制
16 KB
时间限制
400 ms
内存限制
64MB
我的代码哪里出现问题了求助
#include<stdio.h>
int main(){
int i=0;
char s,*p;
p=&s;
scanf("%s",p);
for(;s!='\0';i++)
{
printf("%s",*(p+i));
}
s='\n';
return 0;
}

yuxijian2020 发表于 2021-4-27 14:01:03

int i=0;
char s

你这里都限定了 s的长度为0

Porphyring 发表于 2021-4-27 14:23:57

#include<stdio.h>
int main(){
int i;
char s,*p;
p=&s;
scanf("%s",p);
for(i=0;s!='\0';i++)
{
printf("%s",*(p+i));
}
s='\n';
return 0;
}
改正了之后。。
a.c: In function ‘main’:
a.c:9:10: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat=]
printf("%s",*(p+i));
          ^
a.c:6:1: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%s",p);
^~~~~~~~~~~~~
a.c:4:1: warning: ‘i’ is used uninitialized in this function [-Wuninitialized]
char s,*p;
^~~~

yuxijian2020 发表于 2021-4-27 16:46:27

Porphyring 发表于 2021-4-27 14:23
#include
int main(){
int i;


你绝对是有毒....
你现在连 i 都不初始化了,s 怎么可能能声明成功....
要么你就给 s 数组声明一个足够大的定值
要么就 malloc 堆申请然后大小改变后用 realloc 扩大 s 的空间

你这个声明就不对,没有这种声明方法
页: [1]
查看完整版本: PTA下字符串输入输出验证2:循环配合%c读入串发生没想到的“段错误”。