#題目描述:


#我的代碼思路(C):
#include <stdio.h>
#include <string.h>
int main(void)
{
char* word[100] = { "0" }; // 每個元素為1個單詞(char*)
char str[1000] = { 0 }; // 字串
int str_len = 0;
int index = 0;
fgets(str, 1000, stdin);
str_len = strlen(str) - 1; // 刪去換行符
for (int i = 0; i < str_len; i++)
{
if (str[i] != ' ') // 將每個單詞單獨存盤成一個char*
{
*(word[index]) = str[i];
word[index]++;
}
else
{
index++;
}
}
for (int i = index+1; i > 0; i--) // 倒序輸出
{
printf("%s", word[i - 1]);
}
system("pause");
return 0;
}
#報錯內容:


#希望得到幫助:如何解決這個問題讓運行通過?而不是提供其他思路。畢竟問題解決才能成長鴨!謝謝!
uj5u.com熱心網友回復:
char* word[100] = { "0" };// word為char*指標陣列,且char*指向的"0"為常量,不可修改。試試 char[10][100] = {0}; //注意大小是否步夠
uj5u.com熱心網友回復:
#include <stdio.h>
#include <string.h>
int main(void)
{
//char* word[100] = { "0" }; // 每個元素為1個單詞(char*)
char* word[100] = { NULL }; // 每個元素為1個單詞(char*)
char str[1000] = { 0 }; // 字串
int str_len = 0, flag = 1;
int index = 0;
fgets(str, 1000, stdin);
str_len = strlen(str) - 1; // 刪去換行符
str[str_len] = 0;
word[index] = str;
for (int i = 0; i < str_len; i++)
{
if (str[i] == ' ' || str[i] == '\n') {
if (flag)
index++;
flag = 0;
str[i] = 0;
} else if (flag == 0) {
word[index] = &str[i];
flag = 1;
}
#if 0
if (str[i] != ' ') // 將每個單詞單獨存盤成一個char*
{
//*(word[index]) = str[i];
word[index] = &str[i];
//word[index]++;
}
else
{
index++;
}
#endif
}
for (int i = index+1; i > 0; i--) // 倒序輸出
{
printf("%s ", word[i - 1]);
}
putchar(10);
//system("pause");
return 0;
}
供參考~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/94406.html
標籤:C語言
