(命令行参数)写一个程序,其命令行包括一个字符参数s,运行中由标准输入读入一系列正文,该程序把所有行依次输出,并在那些包含字符串s的行前面标一个星号。
提示:可使用系统函数 strstr(str*, substr*),它判断一个字符串substr是否为另一个字符串str的子串。
#include
#include
int main()
{
char s;
int i = 0;
char a[100][100];
scanf_s("%c",&s);
while (scanf_s("%s",a[i]) != EOF)
{
i++;
}
int len[100], count = 0;
for (int j = 0; j < i; j++)
{
len[j] = strlen(a[j]);
}
for (int j = 0; j < i; j++)
{
count = 0;
for (int k = 0; k < len[j]; k++)
{
if (a[j][k] == s)
{count++;
}
}
if (count > 0)
{
for (int o = 0; o < len[j]; o++)
{
a[j][o + 1] = a[j][o];
a[j][len[j] + 1] = "\0";
a[j][0] = "*";
}
}
}
for (int j = 0; j < i; j++)
{
puts(a[j]);
}
}
我觉得写的没有问题,为什么会报错呢
改动处见注释,供参考:
#include<stdio.h>
#include<string.h>
int main()
{
char s;
int i = 0;
char a[100][100];
scanf_s("%c", &s, 1); //修改
while (scanf_s("%s", a[i], 100) != EOF) //修改
{
i++;
}
int len[100], count = 0;
for (int j = 0; j < i; j++)
{
len[j] = strlen(a[j]);
}
for (int j = 0; j < i; j++)
{
count = 0;
for (int k = 0; k < len[j]; k++)
{
if (a[j][k] == s)
{
count++;
}
}
if (count > 0)
{
for (int o = len[j]; o > 0; o--)
//for (int o = 0; o < len[j]; o++) 修改
{
a[j][o] = a[j][o - 1];//a[j][o + 1] = a[j][o]; 修改
}
a[j][0] = '*'; //a[j][0] = " * "; 修改
a[j][len[j] + 1] = '\0'; //a[j][len[j] + 1] = "\0"; 修改
}
}
for (int j = 0; j < i; j++)
{
puts(a[j]);
}
}