想问一个关于发送字符串的问题
本帖最后由 zuihoudetutu 于 2020-1-21 18:38 编辑sdasd 本帖最后由 jackz007 于 2019-11-7 20:02 编辑
两个问题:
1、字符串末尾没有结束标志,当 str[ i ] == '\n' 时,应该把这个字符改为字符串结束标志 str[ i ] = '\0',然后,用 break 语句结束循环;
2、逐个打印字符的时候,应该只打印前面输入的内容,而不是机械地按 100 个字符打印,方法是循环判定当前字符,只有当 str[ i ] != '\0' 的时候,才打印这个字符,否则,就用 break 语句直接结束循环。
下面是我修改的代码,楼主可以测试一下
#include <stdio.h>
int main(void)
{
int i ;
char ch , str ;
for(i = 0 ; i < 99 && (ch = getchar()) != '\n'; str = ch);
str = '\0' ;
printf("\n") ;
for(i = 0 ; str != '\0';) printf("%c" , str) ;
printf("\n") ;
}
本帖最后由 bin554385863 于 2019-11-7 17:47 编辑
int i , count = 0;//增加一个计数器
char str;
for(i=0 ; i < 100 ; i++)
{
scanf("%c",&str);
if(str[\i]=='\n')
{
break;
}
count++;//统计输入的字符个数
}
printf("\n");
for(i=0 ; i<count ;i++)/*输出输入字符,这样即使没有结束符,也可以正常输出*/
{
printf("%c",str[\i]);
}
printf("\n");
jackz007 发表于 2019-11-7 16:11
两个问题:
1、字符串末尾没有字符串标志,当 str[ i ] == '\n' 时,应该把这个字符改为字符串结 ...
试了下 你这个ok 谢谢大佬 bin554385863 发表于 2019-11-7 16:28
int i , count = 0;//增加一个计数器
char str;
for(i=0 ; i < 100 ; i++)
你这个我这里运行后乱码... 本帖最后由 zuihoudetutu 于 2020-1-21 18:38 编辑
ss 本帖最后由 bin554385863 于 2019-11-7 20:29 编辑
zuihoudetutu 发表于 2019-11-7 19:35
你这个我这里运行后乱码...
你确定?好好看看代码!
#include <stdio.h>
int main(int argc, char const *argv[])
{
int i, count = 0; //增加一个计数器
char str;
for (i = 0; i < 100; i++)
{
scanf("%c", &str);
if (str == '\n')
{
break;
}
count++; //统计输入的字符个数
}
printf("\n");
for (i = 0; i < count; i++) /*输出输入字符,这样即使没有结束符,也可以正常输出*/
{
printf("%c", str);
}
printf("\n");
return 0;
}
页:
[1]