我正在编写一个C程序,在找到第一个下划线字符之前反转字符串的一部分' _'
例如: 如果输入是
black_black
输出必须是
kcalb_black
另一个输入,
nounderscore
必须反转整个字符串
erocsrednuon
输入的另一种可能性,
_intact
提供,
_intact
我的代码是
#include<stdio.h>
#include <stdlib.h>
int main()
{
char stringTillUnderscore[100], stringAfterUnderscore[100], inputString[100];
int count = 0, counter = 0;
fgets(inputString, 100, stdin);
while(inputString[count] != '_') {
stringTillUnderscore[count] = inputString[count];
count++;
}
for(counter = strlen(stringTillUnderscore) - 1; counter >= 0; counter--) {
printf("%c", stringTillUnderscore[counter]);
}
for(counter = strlen(stringTillUnderscore); counter < strlen(inputString); counter++) {
printf("%c", inputString[counter]);
}
}
为什么我的代码不起作用?它只返回垃圾值。
答案 0 :(得分:4)
您缺少终止字符串
的null即
....
count++;
}
stringTillUnderscore[count] = 0;
另外
while(inputString[count] != '_') {
应该是
while (inputString[count] && inputString[count] != '_') {
以防该字符串中没有下划线。
答案 1 :(得分:1)
没有必要包含 的 stdlib.h中强>
也没有必要声明字符数组 stringAfterUnderscore [100]
工作代码是,
#include<stdio.h>
//#include <stdlib.h>
#include<string.h>
int main()
{
char stringTillUnderscore[100], inputString[100];
int count = 0, counter = 0;
fgets(inputString, 100, stdin);
while(inputString[count] != '_')
{
stringTillUnderscore[count] = inputString[count];
count++;
}
for(counter = strlen(stringTillUnderscore) - 1; counter >= 0; counter--)
{
printf("%c", stringTillUnderscore[counter]);
}
for(counter = strlen(stringTillUnderscore); counter < strlen(inputString); counter++)
{
printf("%c", inputString[counter]);
}
return 0;
}