基本上,我希望我的代码的这一部分从输入的第一行读取句子的数量,然后是句子本身,并将它们存储在数组中(即使输入可以包含空格,最后的数组条目可能不是,而不是大写字母)。 对于以下输入
3
one two three
four five six (program didn't let me input another line, but just two more for the sake of the example.)
stack over flow
我想要以下输出
onetwothree
fourfivesix
stackoverflow
资本化尚未实施,但我认为这并不难。 用我的代码:
void main(){
int length1, length2,i,n;
scanf("%d", &length1);
char *sentenceArray1[length1];
char tempString[100000];
/*The array for storing the first set of sentences, and a temporary string used
for allocating memory in the next loop*/
for(i=0;i<=length1;i++){
fgets(tempString, 100000, stdin);
sentenceArray1[i]=malloc((strlen(tempString))*sizeof(char));
sentenceArray1[i]=tempString;
for(n=0;n<(strlen(tempString));n++){
if(tempString[n]==' '){
sentenceArray1[i][n]=tempString[n+1];
n++;
}
printf("%s",sentenceArray1[i]);
}
}
我的实际输出如下:
one two three
one two three
one two three
onettwo three
onettwo three
onettwo three
onettwotthree
onettwotthree
onettwotthree
onettwotthree
onettwotthree
onettwotthree
如果标记偏离,我很抱歉,这是我第一次发帖。
答案 0 :(得分:1)
请考虑以下事项:
<强>代码强>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STR_LEN (100000)
int main(void)
{
int numStrings, tempIndex, modIndex, numSpaces;
char tempString[MAX_STR_LEN];
printf("Enter number of strings: ");
scanf("%d", &numStrings);
while(getchar() != '\n')
continue;
char **modifiedStrings = malloc(numStrings * sizeof(*modifiedStrings));
for(int i = 0; i < numStrings; i++)
{
printf("Enter string %d: ", i + 1);
fgets(tempString, MAX_STR_LEN, stdin);
tempIndex = numSpaces = 0;
while(tempString[tempIndex] != '\n')
{
if(tempString[tempIndex++] == ' ')
numSpaces++;
}
modifiedStrings[i] = malloc(strlen(tempString) - numSpaces + 1);
tempIndex = modIndex = 0;
while(tempString[tempIndex] != '\n')
{
if(tempString[tempIndex] != ' ')
modifiedStrings[i][modIndex++] = tempString[tempIndex];
tempIndex++;
}
modifiedStrings[i][modIndex] = '\0';
}
for(int i = 0; i < numStrings; i++)
printf("%s\n", modifiedStrings[i]);
return 0;
}
<强>逻辑强>
numStrings
)中。'\n'
留下的换行符(scanf
)。char *
数组,每个字符串将输入一个元素。char
数组(tempString
)。' '
字符串中的空格数(char
)。malloc
只有足够的内存来满足您的需求。 modifiedStrings[i]
),跳过空格。NULL
('\0'
)附加到新char
数组的末尾以使其成为字符串。待办事项
运行示例
输入字符串数:3
输入字符串1:一二三 输入字符串2:四五六 输入字符串3:堆叠流量
onetwothree
fourfivesix
stackoverflow